运算符“??”是什么意思?在 Dart/Flutter 中?

cyb*_*Vnk 9 operators ternary dart flutter

我看过这段代码,需要对“??”进行解释。我知道三元运算符,例如“?” 然后是 true 条件,“:”之后是 false/else 条件。但是双“??”是什么意思??

提前致谢

      widget.secondaryImageTop ??
      (widget.height / 2) - (widget.secondaryImageHeight / 2); ```
Run Code Online (Sandbox Code Playgroud)

rzw*_*oot 13

所有 dart 操作员列表

它是合并运算符。

a ?? b

意思是:如果 a 不为 null,则解析为a。如果a为 null,则解析为b

SQL 和其他一些语言有这个运算符。


小智 5

你的例子:

widget.secondaryImageTop ??
      (widget.height / 2) - (widget.secondaryImageHeight / 2);
Run Code Online (Sandbox Code Playgroud)

这将使用 widget.secondaryImageTop 除非它为空,在这种情况下它将使用 (widget.height / 2) - (widget.secondaryImageHeight / 2)。

来源和详细信息,包括 dartpad,您可以在其中使用预先填充的示例进行尝试: https://dart.dev/codelabs/dart-cheatsheet

该文档中的一个示例,也使用 = 符号。

??= 赋值运算符,仅当变量当前为 null 时才为该变量赋值:

int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.

a ??= 5;
print(a); // <-- Still prints 3.
Run Code Online (Sandbox Code Playgroud)