Dart基础之 Callable class

1,274 阅读1分钟

前言

Callable class是什么鬼,如果学过 Java,你肯定会有这样的疑问。

不要紧,耐心看下去。

什么是 Callable class(可调用类)

在 Dart 中允许一个类通过实现call()方法,让实例像函数那样被直接调用的类, 称为callable class

看个例子

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');
}

这里,我们定义了一个名叫 WannabeFunction的类,实现了一个call()方法。 然后在main函数中新建一个WannableFunction的实例wf,直接用实例函数的写法调用wf("Hi","there,","gang")

好处是什么

callable class 这样的语法设计有三个好处:

  • 可以让初始化后置
  • 相对的能省略一个命名函数
  • 支持函数式编程(传递方法对象)

能否定义多个 call()

答案是不能

class Person {
  String name;
  int age;

  call(String name, int age) {
    this.name = name;
    this.age = age;
  }

  call(){} //解析时报错call()已经定义了
  
}

call()返回值

返回 Dart 中的 dynamic 对象, 这样也就适合函数式编程了。

后话

有关 callable class 的介绍,官方文档中很少提及,水平有限,只能讲解到这了,如果你有更好的想法,欢迎给我提建议。