在布尔表达式中使用 => 运算符

Use the => operator in boolean expressions

如何在布尔表达式中使用“=>”运算符?例如,下面的声明是错误的,因为 "isOpen = !isOpen" returns 一个布尔值:

// not a good function declaration
void toggle => isOpen = !isOpen;

我的想法与此类似:

void toggle => shutUp(isOpen = !isOpen);

其中 shutUp() 是一个 returns 一个 void 值并接受任何布尔参数的函数。

像这样:

var isOpen = false;
var toggle = () => isOpen = !isOpen;
toggle();
print(isOpen);
toggle();
print(isOpen);

Dart 语言允许将表达式用作函数。
此功能称为函数表达式。
此功能允许表达式可以有参数。

示例。

void main() {
  var sum = (a, b) => a + b; // <==== function expression
  for (int i = 0; i < 5; i++) {
    print(sum(i, i));
  }
}

在这种情况下,lexeme => 并不表示运算符。它意味着一个词素,它标志着函数体(函数表达式的)的开始。

这不是使用函数表达式的唯一一种可能的语法。 只是举例说明。

您不应将 => 用于 void 函数。

正如 Mezoni 所写,=> e{ return e; } 的 shorthand 符号。你不应该在 void 函数中写 return e,所以你也不应该使用 =>.

随便写:

void toggle() { isOpen = !isOpen; }