dart/flutter 中的这个一元后缀是什么?
What is this unary postfix in dart/flutter?
我在 Dart/flutter 代码中看到了这个一元后缀:?.
像这样:
videoController?.dispose();
我想知道它是如何工作的...
它测试 null,
https://www.dartlang.org/guides/language/language-tour
"?. 条件成员访问 类似于 .,但最左边的操作数可以为空;示例:foo?.bar 从表达式 foo 中选择 属性 bar 除非 foo 为空(在这种情况下 foo 的值?.bar 为 null)"
这是一个null-aware运算符。它是以下的缩写形式。
代码
((obj) => obj == null ? null : x.method())(object)
// is equal to
object?.method()
您可以了解更多 about null-aware operators here。
说明
读作:
如果object
不是null
,则只执行method
如果object
是null
returnnull
(否则从method
求值)
这是 Dart 中的一个很棒的功能
意思是 当且仅当该对象不为 null 否则,return null.
简单示例:
void main() {
Person p1 = new Person("Joe");
print(p1?.getName); // Joe
Person p2;
print(p2?.getName); // null
//print(p2.getName); // this will give you an error because you cannot invoke a method or getter from a null
}
class Person {
Person(this.name);
String name;
String get getName => name;
}
还有其他很酷的 null 感知运算符,例如 ??
。 以了解有关 null 感知运算符的更多信息。
我在 Dart/flutter 代码中看到了这个一元后缀:?.
像这样:
videoController?.dispose();
我想知道它是如何工作的...
它测试 null,
https://www.dartlang.org/guides/language/language-tour
"?. 条件成员访问 类似于 .,但最左边的操作数可以为空;示例:foo?.bar 从表达式 foo 中选择 属性 bar 除非 foo 为空(在这种情况下 foo 的值?.bar 为 null)"
这是一个null-aware运算符。它是以下的缩写形式。
代码
((obj) => obj == null ? null : x.method())(object)
// is equal to
object?.method()
您可以了解更多 about null-aware operators here。
说明
读作:
如果
object
不是null
,则只执行如果
object
是null
returnnull
(否则从method
求值)
method
这是 Dart 中的一个很棒的功能
意思是 当且仅当该对象不为 null 否则,return null.
简单示例:
void main() {
Person p1 = new Person("Joe");
print(p1?.getName); // Joe
Person p2;
print(p2?.getName); // null
//print(p2.getName); // this will give you an error because you cannot invoke a method or getter from a null
}
class Person {
Person(this.name);
String name;
String get getName => name;
}
还有其他很酷的 null 感知运算符,例如 ??
。