Вызов функции с нулевым знанием?

Дарт имеет несколько нулевых операторов, то есть можно сделать

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

Возможно ли это для функций, которые хранятся или передаются в переменные? Обычная картина

typedef void SomeFunc();

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

Было бы неплохо, чтобы здесь был какой-то ноль-знающий вызов, например f?(), Что-нибудь, что мы можем использовать, чтобы не засорять код нулевыми проверками для этих обратных вызовов?

1 ответ

Решение

Форма документов:

Dart - это настоящий объектно-ориентированный язык, поэтому даже функции являются объектами и имеют тип Function.

Применить нулевой осведомленный ?. оператор к call метод функциональных объектов:

typedef void SomeFunc();

SomeFunc f = null;

f?.call();
Другие вопросы по тегам