【问题标题】:How to use ternary operator(?:) or Null Coalescing operator(??) to write if-else condition?如何使用三元运算符(?:)或空合并运算符(??)编写 if-else 条件?
【发布时间】:2019-11-18 08:08:13
【问题描述】:
if(country1 != null)
{ 
    country1 = "Turkey";
}
else
{
country1 = "ABD";
}

【问题讨论】:

  • 你能补充一个详细的问题吗?

标签: flutter dart


【解决方案1】:

三元运算符使用三个操作数:

一个条件后跟一个?, 后跟一个表达式来评估条件是否为“真实”,然后是:, 后跟一个表达式来评估条件是否为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 语句是多余的。

所以?? 只会将变量设置为某个值,前提是它之前为空

在您的代码中,您尝试分配两个值之一TurkeyABD,如果前一个值为空,则不是单个值。所以你得到一个语法错误。

所以,总结一下。

if() {}
else {}

可以使用三元运算符? :缩短。

if(){}

可以使用 ?? 运算符缩短,因为这里的 else 语句将是多余的。

因此,您的代码的等效项不会使用 ?? 运算符。

【讨论】:

  • 您好,首先感谢您!我对null感到困惑。通常,我们可以对三元运算符使用双重问题。 ??是一个空检查运算符。例如:字符串 Country = country1 ?? “ ABD” 所以我想使用双重问题而不是空检查。国家 1 = 国家 1 != ?? '土耳其' : 'ABD'; (代码给出错误)我该怎么办?
  • 我明白了!谢谢医生
【解决方案2】:
var s = country1 != null ? "Turkey" : "ABD";

【讨论】:

    【解决方案3】:
    final result = country1 != null ? 'Turkey' : 'ABD';
    

    【讨论】:

      【解决方案4】:

      语法: var 结果 = a != null ?条件为真则进一步代码:条件为假则进一步代码;

      在你的情况下: var 结果 = country1 != null ? “土耳其”:“ABD”;

      【讨论】:

        【解决方案5】:

        你也可以这样做:

        final result = "${country1 != null ? 'Turkey' : 'ABD'}";
        

        【讨论】:

          猜你喜欢
          • 2013-10-30
          • 2022-12-06
          • 2021-09-15
          • 2021-09-10
          • 1970-01-01
          • 1970-01-01
          • 2010-12-12
          • 2021-01-03
          • 1970-01-01
          相关资源
          最近更新 更多