运行多条语句的flutter三元运算符

3lxsmp7m  于 2023-02-25  发布在  Flutter
关注(0)|答案(4)|浏览(192)

我不想在三元运算符中放置更多的条件,而是在计算一个条件后运行2个语句。
if-else结构将是:

if( maleCardColor == inactiveCardColor ) {
// i want to run both these lines in ternary operator
      **maleCardColor = activeCardColor;
      femaleCardColor = inactiveCardColor;**

        } else {
          maleCardColor = inactiveCardColor;
    }

我想这样使用它:_

maleCardColor = (maleCardColor==inactiveCardColor)?   (maleCardColor = activeCardColor   &&   femaleCardColor = inactiveCardColor) : maleCardColor = inactiveCardColor ,
bbuxkriu

bbuxkriu1#

据我所知,如果你想在三元运算符中使用多行,你可以使用下面两种方法。

("A" == "B") ? ternaryTrueMethod() : ternaryFalseMethod();

  void ternaryTrueMethod() {
    /*
    multi-line code here
     */
    return;
  }

  void ternaryFalseMethod() {
    /*
    multi-line code here
     */
    return;
  }

第一种方法适用于三元满足,第二种方法适用于三元不满足。

mec1mxoz

mec1mxoz2#

我想你可以写这个,但我要说它的可读性很差,在我看来风格也很糟糕。

maleCardColor = (maleCardColor == inactiveCardColor && (femaleCardColor = inactiveCardColor) == inactiveCardColor) ? maleCardColor = activeCardColor : maleCardColor = inactiveCardColor;

这样做的原因是因为在dart中赋值也会返回它所赋值的值,所以赋值是作为三元组条件的一部分来执行的,只需将它与要赋值的对象进行比较即可。如果条件的第一部分已经为false,那么它就不会执行,因为如果它前面的条件已经为false,那么它甚至不会越过&&进行查找

ct2axkht

ct2axkht3#

您可以定义一个run顶级函数,并使用它来执行多个语句:

void run(Function() fun) => fun();

对于三元运算符,它看起来如下所示:

maleCardColor == inactiveCardColor
    ? run(() {
        maleCardColor = activeCardColor;
        femaleCardColor = inactiveCardColor;
      })
    : maleCardColor = inactiveCardColor;

我认为这类似于同名的Kotlin函数。

hlswsv35

hlswsv354#

x =   maleCardColor == inactiveCardColor
    ? {
maleCardColor = activeCardColor,
femaleCardColor = inactiveCardColor,
      }
    : maleCardColor = inactiveCardColor;

相关问题