6

Dart 有一些可识别空值的运算符,即可以这样做

var obj;
obj?.foo(); // foo is only called if obj != null.

这也适用于存储或传递给变量的函数吗?通常的模式是

typedef void SomeFunc();

void foo(SomeFunc f) {
  if (f != null) f();
}

在这里有一些能感知 null 的调用会很好,比如f?(). 有什么我们可以用来不乱扔这些回调的空检查代码的吗?

4

1 回答 1

12

形成文档

Dart 是一种真正的面向对象的语言,所以即使是函数也是对象并且有一个类型,Function。

将 null 感知?.运算符应用于call函数对象的方法:

typedef void SomeFunc();

SomeFunc f = null;

f?.call();
于 2019-02-28T20:20:17.747 回答