externalDart是什么意思?例如:external DateTime._now();
我是Dart的新手,找不到的文档external,所以您可以举一个示例进行说明吗?
Min*_*mir 13
当我们在类中创建一个外部函数时 toString()
external String toString();
Run Code Online (Sandbox Code Playgroud)
意味着这个方法是抽象的,父类的子类会添加函数体,这是因为在Dart中我们只能创建一个抽象类。
概括:
外部函数 = 非抽象类中的抽象函数
Gün*_*uer 11
9.4外部函数
外部函数是其主体与其
声明分开提供的函数。外部函数可以是顶级函数(17),一种方法
函数的主体在其他地方定义。
据我所知,这用于修复浏览器中Dart VM和服务器上Dart VM的不同实现。
Moh*_*lim 10
我不认为external关键字是用来将方法标记为抽象的,即使这是可能的
在抽象类中留下一个没有实现的方法就足够了,将其设置为抽象的
它相当于declareTypeScript 中的,而extern在 C# 中,它们用于与其他运行时的互操作性,这意味着你告诉编译器“不要担心这个方法的实现,我保证它会在运行时存在”,运行时可能会用 C 或 Javascript 或其他语言编写
如果您想知道为什么或在哪里应该使用external关键字,这里还有一个 Flutter 示例。
class MyStruct extends Struct {
@Int32()
external int a;
@Float()
external double b;
external Pointer<Void> c;
}
Run Code Online (Sandbox Code Playgroud)
有时,但不经常,当您使用本机库时,在本例中是Struct访问内存中本机结构的字段。Struct在“我们必须将所有字段声明为”下external,因为它将是来自dart:ffi(C / C++) 的外部字段。
因此,external这不仅仅是声明“抽象方法”的方式。
9.4 外部函数 外部函数是指其主体与其声明分开提供的函数。
这意味着您定义了该函数,但没有实现。这正是定义抽象方法的方式,但唯一的区别是,使用 external 时,您不会在 dart 中实现该方法,而是在 C 或其他语言中实现。
像 String 类这样的东西可以被视为外部函数,除了它用 @pragma('vm:entry-point') 标记的 String 类,这使得整个类使用本机代码。
请看下面的例子来理解:
这个飞镖的侧面。
https://github.com/dart-lang/sdk/blob/main/sdk/lib/core/string.dart#L711
这是 C++ 中的实现。
https://github.com/dart-lang/sdk/blob/main/runtime/lib/string.cc#L473-#L478