为什么我们需要飞镖中的Callable类

时间:2019-04-21 04:59:01

标签: dart flutter

dart lang中可调用类的用途是什么?以下是飞镖官方网站上提供的示例代码。

class WannabeFunction {
  call(String a, String b, String c) => '$a $b $c!';
}

main() {
  var wf = new WannabeFunction();
  var out = wf("Hi","there,","gang");
  print('$out');
}

添加调用函数并使用类调用它而不是在类中创建函数本身有多大作用

1 个答案:

答案 0 :(得分:1)

Dart遵循“一切都是对象”的规则。函数一个对象。因此,对象必须包含某种类似于函数的行为。

这样写:

void foo(int bar) {}

仅仅是以下方面的语法糖:

class _Foo {
  const Foo();

  void call(int bar) {}

  String toString() => "Closure 'foo'";
}

const foo = _Foo();

这对于制作“命名函数”很有用:

class _Foo {
  const Foo();

  void call(int bar) {}

  void named() {}
}

const foo = _Foo();

两者都允许:

foo(42);

foo.named();