Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart-Null运算符_Dart - Fatal编程技术网

Dart-Null运算符

Dart-Null运算符,dart,Dart,我需要像这样的东西: if (variable != null) { otherVariable = variable; } 有没有一种更简洁的方法可以用空操作符来写呢?我想到的是: (variable != null) ? otherVariable = variable : null; 这是最短的路径: otherVariable = (variable != null) ? variable : null; 但在您的情况下,若它为null,那个么当变量已经为null时,为什么要将

我需要像这样的东西:

if (variable != null) {
  otherVariable = variable;
}
有没有一种更简洁的方法可以用空操作符来写呢?我想到的是:

(variable != null) ? otherVariable = variable : null;

这是最短的路径:

otherVariable = (variable != null) ? variable : null;
但在您的情况下,若它为null,那个么当变量已经为null时,为什么要将它赋值为null呢?你可以这样做:

otherVariable = variable;
在这两种代码中,发生了相同的事情。使用第二个代码,因为它很短,如果必须用类似以下内容替换“null”,请使用第一个代码:

otherVariable = (variable != null) ? variable : 'default';

Dart中目前没有允许赋值依赖于非空赋值的特殊运算符

最接近的运算符是其中otherVariable???=变量;与您想要的相反:如果otherVariable为null,则将变量分配给otherVariable,如果variable为非null,则不分配给otherVariable

您可以使用并使用otherVariable=variable??其他变量;,如果变量为空,则将otherVariable的当前值重新分配给自身。在这种情况下,它仍然执行赋值,如果otherVariable是setter,则可以检测到赋值


我只想使用if变量!=null otherVariable=variable;。这是目前最短的代码,它完全符合您的要求:仅当变量不为null时才分配给otherVariable。

如果变量等于null,otherVariable的值应该是多少?如果它应该与第一个示例等效,如果变量为NULL,则不应该对其他变量赋值。考虑使用NULL感知操作符吗?如果变量是非空的,只更新其他变量是很有意义的。例如,变量可以是可选参数updatefos{int?variable,…}{if variable!=null otherVariable=varaiable;}。@dev aengts使用??接线员不适合这个问题。是的@lrn我现在了解到关于你的答案??在可以有条件避免的情况下仍将执行赋值。长官,但是会有什么影响呢?会被认为是坏习惯吗?同意它可能会混淆未来的维护者,或者它会有其他不希望出现的问题吗?如果任务有副作用,如果它是一个设置者,这可能会发生,因为在设置值时,它可能会触发一个更改事件,那么调用setter与不调用setter有很大的不同。当然,在触发更改事件之前,它可能应该检查该值是否实际不同。否则,赋值效率很低,代码也不能反映原始意图,这不利于维护。在这种情况下,这不是最初的问题所要求的。