Вызов функции с нулевым знанием?
Дарт имеет несколько нулевых операторов, то есть можно сделать
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();