Dart中的patch关键字是什么意思?

6
有人能解释一下“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);

这是什么意思?_patch.dart文件是用来做什么的?
1个回答

11

补丁机制是在内部使用的(仅对内部可用,不对最终用户可用),以提供核心库功能的不同实现。

对于下面的数学库,平台无关的库源代码位于 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/runtimelib/math/dart2js,这使得 SDK 更加清晰和易于理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接