【问题标题】:Null-aware function call? [duplicate]空感知函数调用? [复制]
【发布时间】:2019-07-22 19:24:07
【问题描述】:

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?(),那就太好了。有什么方法可以避免对这些回调进行空检查而乱扔代码吗?

【问题讨论】:

    标签: dart dart-2


    【解决方案1】:

    形成docs

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

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

    typedef void SomeFunc();
    
    SomeFunc f = null;
    
    f?.call();
    

    【讨论】:

    • 谢谢,这确实有效。仅从文档来看,我并不清楚(“call()”仅用于可调用类。但放在一起,这是有道理的。
    • 您也可以使用apply 进行更多控制:请参阅stackoverflow.com/a/61141239/6665568
    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2016-01-09
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多