Dart具有一些可识别null的运算符,即可以做到
var obj;
obj?.foo(); // foo is only called if obj != null.
对于存储或传递给变量的函数,这也是可行的吗?通常的模式是
typedef void SomeFunc();
void foo(SomeFunc f) {
if (f != null) f();
}
最好在这里进行一些可以感知空值的调用,例如f?()
。有什么我们可以用来不对那些回调进行null检查的代码吗?
答案 0 :(得分:2)
形成docs:
Dart是一种真正的面向对象的语言,因此函数甚至都是对象,并且具有类型Function。
将感知空值的?.
运算符应用于功能对象的call
方法:
typedef void SomeFunc();
SomeFunc f = null;
f?.call();