如何在布爾表達式中使用「=>」運算符?例如,下面的聲明是錯誤的,因爲「ISOPEN = ISOPEN!」返回一個布爾值:在布爾表達式中使用=>運算符
// not a good function declaration
void toggle => isOpen = !isOpen;
我想類似這樣:
void toggle => shutUp(isOpen = !isOpen);
凡shutUp()
是一個函數,返回void
值並接受任何布爾參數。
如何在布爾表達式中使用「=>」運算符?例如,下面的聲明是錯誤的,因爲「ISOPEN = ISOPEN!」返回一個布爾值:在布爾表達式中使用=>運算符
// not a good function declaration
void toggle => isOpen = !isOpen;
我想類似這樣:
void toggle => shutUp(isOpen = !isOpen);
凡shutUp()
是一個函數,返回void
值並接受任何布爾參數。
像這樣:
var isOpen = false;
var toggle =() => isOpen = !isOpen;
toggle();
print(isOpen);
toggle();
print(isOpen);
達特語言允許使用表達爲函數。
此功能稱爲函數表達式。
該功能允許表達式可以有一個參數。
例子。
void main() {
var sum = (a, b) => a + b; // <==== function expression
for (int i = 0; i < 5; i++) {
print(sum(i, i));
}
}
在這種情況下,詞位=>
並不意味着運營商。它意味着一個標記函數體(函數表達式)開始的詞位。
這不是使用函數表達式的唯一可能的語法。這只是一個理解的例子。
您不應該使用=>
作爲void函數。
As Mezoni寫道,=> e
是{ return e; }
的簡寫符號。您不應該在無效函數中寫入return e
,所以您也不應該使用=>
。
只要寫:
void toggle() { isOpen = !isOpen; }
Thansk。這很奇怪,但它有效。 – Cequiel
=> x是{return x; }。所以函數可以寫成:toggle()=> isOpen =!isOpen;和一個匿名函數是一樣的,只是沒有名字:()=> isOpen =!isOpen ;. [更多關於這裏。](https://www.dartlang.org/resources/dart-tips/dart-tips-ep-7) – Alvis
這並不奇怪,它的工作原理。它與'bool toggle()=> isOpen =!isOpen;'幾乎相同,只是以更復雜的方式寫入。一種方法也可能不適用於方法 - 你不能用'var toggle'實現'void toggle()'方法簽名。我不建議使用此解決方案。 – lrn