有人可以解释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
个文件?
答案 0 :(得分:7)
补丁机制在内部使用(并且仅可用 内部,而不是最终用户)提供不同的实现 核心库功能。
对于下面的数学库,平台无关
lib/math
中的库源将这些方法声明为external
。
external
方法从补丁文件中获取它们的实现。那里
是runtime/lib/math_patch.dart
中VM中的补丁文件,它是
提供VM的实现,并有一个补丁文件
中的dart2js
编译器
lib/compiler/implementation/lib/math_patch.dart
,提供
dart2js
实施。
分析器可以理解external
关键字,并执行此操作
方式只允许共享部分在SDK中并被理解
工具。这意味着SDK可以有lib/math
而不是
lib/math/runtime
和lib/math/dart2js
,它使SDK更清晰
更容易理解。