如何在Flutter Dart中使用具有多个条件的三元运算符?

37

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

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

我希望像这样使用它

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

1
使用括号来分组表达式。 - jamesdlin
你可以使用括号来使用逻辑运算符“OR”和“AND”。 - rahul.sharma
2
你看到了什么问题?即使没有额外的括号,代码 foo == 1 || foo == 2 ? doSomething : doSomething 也是有效的。 - lrn
1
我想提出一个稍微不同的观点——为什么要使用三元运算符而不是if/else?- 不必要地使您的代码难以阅读。 - Matthew Layton
10个回答

84

如果你在讨论Dart中的else if语句,那么这个三元运算符:

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

等同于此:

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

不错。所以 ?: 总是交替出现。 - West
3
“?”标记表示条件的结束,“:”表示否则。 - James Casia

15

针对三种情况使用:

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


10
不必对他无礼并给予负评。他提出了使用多个三元运算符的想法。我认为这没有什么问题。 - Mahesh

4
请尝试以下操作:
(2 > 3)?print("It is more than 3"):print("It is less than 3");
////Prints It is less than 3 to the console

3

如果想使用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");
 }

3

请尝试以下代码:

foo == 1 ? doSomething1 : (foo == 2 ? doSomething1 : doSomething2)

如果您需要包含多个条件,则应使用括号。


2
这是一个例子:

同样的内容,如下所示

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

2

这很简单,

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

对于 OR 语句,可以这样写:

foo==1 || foo==2 ? 做某事 : 否则做某事

对于 AND 语句,可以这样写:

foo==1 && foo==2 ? 做某事 : 否则做某事

两种方法都能完美地工作。


2

编辑

原回答偏离了问题。下面是我编辑过的答案。

使用三元运算符:

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

为了让我的方法更加简洁易懂
{1, 2}.contains(foo) ? doSomething() : doSomethingElse();

ORIGINAL

The cleaner way for me is

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

2
谢谢!对于我的情况来说,这是最干净的形式,减少了大约80行代码:D - Maruf Hassan

1

一个条件下的多重检查

if(in_array($foo, [1,2,'other'])) {
    //do something
}
else {
    //else do something
}

-3
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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接