如何将外部函数链接到其实现的示例

int*_*reg 3 dart

我注意到Dart支持external关键字.有人能指出我一个演示如何将外部函数链接到其实现的示例吗?

lrn*_*lrn 5

外部关键字目前仅由平台库使用.它允许dart2js和Dart VM使用相同的库,只有某些功能专用于该平台.它不是您可以用于自己的库的东西,它只在内部使用.

外部关键字已添加到语言中,以便平台库可以执行此操作,并且仍然是有效的Dart代码.

它在平台库中的使用方式是可以将方法标记为external.然后它没有正文(如抽象方法),但编译器或运行时必须提供实现.外部方法的示例:

class Foo {
  external int bar(int x);
}
Run Code Online (Sandbox Code Playgroud)

然后dartj和VM都有自己的补丁文件,提供实际的实现.示例(dart2js格式):

@patch class Foo {
   @patch int bar(int x) => somethingMagical(x); 
}
Run Code Online (Sandbox Code Playgroud)

神奇的部分可以自由使用平台特定的功能(如纯JS代码或本机VM功能).