dart external function
查看源码时看到了external bool identical(Object a, Object b)
,发现关联不到实现,随手查查资料发现这是个复杂的问题 - -
简单来说就是只声明方法,具体实现由外部提供,通常是不同的平台 runtime,类似 Java 的 native 方法。
而 core.identical.identical 的实现在
https://github.com/dart-lang/sdk/blob/master/runtime/lib/identical_patch.dart
@patch
@pragma("vm:exact-result-type", bool)
bool identical(Object a, Object b) native "Identical_comparison";
调用了 native 的 identical.cc 的 Identical_comparison
DEFINE_NATIVE_ENTRY(Identical_comparison, 0, 2) {
GET_NATIVE_ARGUMENT(Instance, a, arguments->NativeArgAt(0));
GET_NATIVE_ARGUMENT(Instance, b, arguments->NativeArgAt(1));
const bool is_identical = a.IsIdenticalTo(b);
return Bool::Get(is_identical).raw();
}
具体怎么关联上还是个迷 - -
参考
https://stackoverflow.com/questions/24929659/what-does-external-mean-in-dart