有人可以解释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
文件?
修补机制在内部使用(并且只能在内部,不向最终用户)提供的核心库功能不同的实现。
对于你有下面的数学库,在平台独立的库源lib/math
声明这些方法为external
。 external
方法得到一个补丁文件的实施。 有一个在虚拟机中的补丁文件在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更清洁和更容易理解。