间接函数引用

时间:2015-06-27 14:43:01

标签: function methods reference dart

不应该(或类似的东西)有效吗?和/或我如何以其他方式实现这一目标?

class A {
   void init() {initializeSomething()}
}

main() {
   var f = A.init;
   A a = new A();
   a.f();
}

一般来说,我希望存储对实例方法的引用 在某个地方,然后把它叫到其他地方(我可以做的其他大多数事情 语言,包括JavaScript)。我认为功能是一流的 在Dart ...并且没有方法功能?方法不是第一类吗?

只要方法是静态的(在我的情况下没用),它就可以工作但不是实例方法......

1 个答案:

答案 0 :(得分:0)

功能和方法不同。您只能在具有此方法的类的实例上调用方法 在您的示例(var f = A.init)中,您引用了一个类似静态(类)方法的实例方法。

有效的是:

make init static

class A {
   static void init() => initializeSomething();
   // or
   // static void init() {
   //   initializeSomething();
   // }
}

main() {
   var f = A.init;
   A a = new A();
   a.f();
}

或使用对init()的实际实例的A的引用:

class A {
   void init() => initializeSomething();
}

main() {
   A a = new A();
   var f = a.init;
   a.f();
}