前言
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
的介绍,官方文档中很少提及,水平有限,只能讲解到这了,如果你有更好的想法,欢迎给我提建议。