2012-10-12 45 views
2

有人可以解釋補丁關鍵字的作用嗎?例如,在 math_patch.dart我看到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文件?

回答

6

補丁機制在內部使用(並且僅在內部使用 而不是最終用戶)以提供 核心庫功能的不同實現。

對於下面的數學庫,獨立於平臺的 庫源lib/math將這些方法聲明爲externalexternal方法從補丁文件中獲得它們的實現。有 是一個補丁文件在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更清晰, 更易於理解。