【问题标题】:How to use a Ternary Operator with multiple condition in flutter dart?如何在颤振飞镖中使用具有多个条件的三元运算符?
【发布时间】:2019-07-01 05:03:23
【问题描述】:

如何使用三元 if else 有两个或多个条件,如使用“OR”和“AND”

    if(foo == 1 || foo == 2)
     {
      do something
      }
     {
      else do something
      } 

我想像这样使用它

  foo == 1 || foo == 2 ? doSomething : doSomething

【问题讨论】:

  • 使用括号对表达式进行分组。
  • 您可以使用括号来使用逻辑“OR”和“AND”。
  • 您看到的问题是什么?代码foo == 1 || foo == 2 ? doSomething : doSomething 是有效的,即使没有额外的括号。
  • 我会提出一个稍微不同的观点 - 为什么 三元而不是 if/else? - 不要不必要地混淆代码的可读性。

标签: dart flutter ternary-operator


【解决方案1】:

试试下面

(2 > 3)?print("It is more than 3"):print("It is less than 3");
////Prints It is less than 3 to the console

【讨论】:

    【解决方案2】:

    如果你指的是 dart 中的 else if 语句,那么这个三元运算符:

    (foo==1)? something1():(foo==2)? something2():(foo==3)? something3(): something4();
    

    等价于:

    if(foo == 1){
        something1();
    }
    elseif(foo == 2){
        something2();
    }
    elseif(foo == 3){
        something3();
    }
    else something4();
    

    【讨论】:

    • 不错。所以?: 总是交替使用
    【解决方案3】:

    三个条件使用:

    value: (i == 1) ? 1 : (i == 2) ? 2 : 0

    【讨论】:

    • 你不必粗鲁地给他投反对票。他给出了使用多个三元运算符的想法。我没有发现任何问题。
    【解决方案4】:
    void main(){
      var a,b,c,d;  
      a = 7;  
      b = 9;  
      c = 11;  
      d = 15;  
      print((a>b)?((a>c)?((a>d)?a:d):c):(b>c)?((b>d)?b:d):(c>d)?c:d);
    }
    

    【讨论】:

      【解决方案5】:

      很简单,

      if(foo == 1 || foo == 2)
       {
        do something
        }
       {
        else do something
        } 
      

      OR 语句可以这样写

      foo==1 || foo==2 ? do something : else do something

      它可以写成AND语句

      foo==1 && foo==2 ? do something : else do something

      两者都可以完美运行

      【讨论】:

        【解决方案6】:

        已编辑

        原始答案与所提出的问题略有不同。以下是我编辑的答案。

        使用三元运算符

        (foo == 1 || foo == 2) ? doSomething() : doSomethingElse();
        

        为了我更干净的方法

        {1, 2}.contains(foo) ? doSomething() : doSomethingElse();
        

        原创

        对我来说更干净的方式是

        if ({1, 2}.contains(foo)) {
          //do something
        } else {
          //do something else
        }
        

        【讨论】:

        • 谢谢!这是我案例中最简洁的形式,减少了大约 80 行代码:D
        【解决方案7】:

        对于 AND 试试这个, // 这里需要同时满足两个或多个条件

        if (primaryImageUploaded == true && signatureImageUploaded == true) {
            // status bool condition in true 
            } else {
             // if false 
            }
        

        对于 OR 试试这个, // 这里只需要满足任何一个条件

        if (primaryImageUploaded == true || signatureImageUploaded == true) {
            // status bool condition in true 
            } else {
             // if false 
            }
        

        另一种 Dart 语法

        if (100 > 50) {
          print("100 is greater than 50");
         }
        

        【讨论】:

          【解决方案8】:

          这是一个相同的例子

          Text((managerStatus == "pending")
              ? "Requested"
                  : (adminStatus == "confirm")
              ? "Amount credited"
                  : "Admin Pending")
          

          【讨论】:

            猜你喜欢
            • 2021-02-27
            • 1970-01-01
            • 1970-01-01
            • 2020-05-15
            • 2020-11-28
            • 1970-01-01
            • 2021-02-16
            • 2022-07-20
            • 2016-11-02
            相关资源
            最近更新 更多