空感知函数调用?

时间:2019-02-28 19:43:36

标签: dart dart-2

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检查的代码吗?

1 个答案:

答案 0 :(得分:2)

形成docs

  

Dart是一种真正的面向对象的语言,因此函数甚至都是对象,并且具有类型Function。

将感知空值的?.运算符应用于功能对象的call方法:

typedef void SomeFunc();

SomeFunc f = null;

f?.call();