Dart中的patch关键字有什么作用?

时间:2012-10-12 06:02:14

标签: dart

有人可以解释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 个答案:

答案 0 :(得分:7)

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

对于下面的数学库,平台无关 lib/math中的库源将这些方法声明为externalexternal方法从补丁文件中获取它们的实现。那里 是runtime/lib/math_patch.dart中VM中的补丁文件,它是 提供VM的实现,并有一个补丁文件 中的dart2js编译器 lib/compiler/implementation/lib/math_patch.dart,提供 dart2js实施。

分析器可以理解external关键字,并执行此操作 方式只允许共享部分在SDK中并被理解 工具。这意味着SDK可以有lib/math而不是 lib/math/runtimelib/math/dart2js,它使SDK更清晰 更容易理解。