【发布时间】:2019-11-18 08:08:13
【问题描述】:
if(country1 != null)
{
country1 = "Turkey";
}
else
{
country1 = "ABD";
}
【问题讨论】:
-
你能补充一个详细的问题吗?
if(country1 != null)
{
country1 = "Turkey";
}
else
{
country1 = "ABD";
}
【问题讨论】:
三元运算符使用三个操作数:
一个条件后跟一个?,
后跟一个表达式来评估条件是否为“真实”,然后是:,
后跟一个表达式来评估条件是否为falsey。
所以在你的情况下,你想要做的是:
country1 = country1 != null ? 'Turkey' : 'ABD';
编辑:
您似乎对?? 运算符有点困惑。 ?? 被称为 Null Coalescing operator
x = x ?? 'foo';
等价于
if( x == null )
x = 'foo';
else
x = *whatever the value previously was*;
所以如果我们在检查之前将x 设置为bar,它不会更改为foo,因为bar 不等于null。另外,请注意这里的else 语句是多余的。
所以?? 只会将变量设置为某个值,前提是它之前为空。
在您的代码中,您尝试分配两个值之一Turkey 或ABD,如果前一个值为空,则不是单个值。所以你得到一个语法错误。
所以,总结一下。
if() {}
else {}
可以使用三元运算符? :缩短。
和
if(){}
可以使用 ?? 运算符缩短,因为这里的 else 语句将是多余的。
因此,您的代码的等效项不会使用 ?? 运算符。
【讨论】:
var s = country1 != null ? "Turkey" : "ABD";
【讨论】:
final result = country1 != null ? 'Turkey' : 'ABD';
【讨论】:
语法: var 结果 = a != null ?条件为真则进一步代码:条件为假则进一步代码;
在你的情况下: var 结果 = country1 != null ? “土耳其”:“ABD”;
【讨论】:
你也可以这样做:
final result = "${country1 != null ? 'Turkey' : 'ABD'}";
【讨论】: