有人可以解释一下patch关键字的作用吗?例如,在
math_patch.dart我看来
patch num pow(num x, num exponent) => MathNatives.pow(x, exponent);
patch double atan2(num a, num b) => MathNatives.atan2(a, b);
patch double sin(num x) => MathNatives.sin(x);
patch double cos(num x) => MathNatives.cos(x);
Run Code Online (Sandbox Code Playgroud)
这是什么意思?什么是_patch.dart文件?
补丁机制在内部使用(并且仅在内部可用,而不是最终用户),以提供核心库功能的不同实现.
对于下面的数学库,平台无关的库源将lib/math声明这些方法external.
external方法从补丁文件中获取它们的实现.VM中有一个补丁文件runtime/lib/math_patch.dart,它为VM提供实现,dart2js编译器中
有一个补丁文件lib/compiler/implementation/lib/math_patch.dart,用于提供
dart2js实现.
该external关键字由分析器理解并做这种方式只允许共享的部分是在SDK和工具来理解.这意味着SDK可以拥有lib/math而不是拥有
lib/math/runtime和lib/math/dart2js,这使SDK更清晰,更容易理解.
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |