2016-08-30 1 views
1

ブール式で「=>」演算子を使用するにはどうすればよいですか?私はこれに似た何かに考えていたブール式で=>演算子を使用する

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

shutUp()がその関数である
void toggle => shutUp(isOpen = !isOpen); 

「!いるisOpen =いるisOpen」はブール値を返しますので、たとえば、次の宣言は、間違っていますvoidの値を返し、ブール型パラメータを受け入れます。

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

答えて

2


この機能は、関数式と呼ばれます。
この機能を使用すると、式にパラメータを設定できます。

例。この場合、語彙素=>

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

オペレータを意味しません。これは、(関数式の)関数本体の先頭を示す字句を意味します。

これは、関数式を使用するための唯一の構文ではありません。 これは単なる理解のための例でした。

+0

Thanskを。それは奇妙ですが、それは動作します。 – Cequiel

+0

=> xは{return xの省略形です。 }。関数は次のように書くことができます:toggle()=> isOpen =!isOpen;名前のない無名関数は同じです:()=> isOpen =!isOpen ;. [これ以上のことはこちら](https://www.dartlang.org/resources/dart-tips/dart-tips-ep-7) – Alvis

+0

それはうまく動作するわけではありません。 'bool toggle()=> isOpen =!isOpen;'とほぼ同じですが、より複雑な形で書かれています。メソッドのためにおそらく動作しない方法 - 'toggle()'メソッドのシグネチャを 'var toggle'で実装することはできません。このソリューションの使用はお勧めしません。 – lrn

1

ダート言語は関数として式を使用できます。このよう

1

void関数には=>を使用しないでください。

Mezoniが書いているように、=> e{ return e; }の略記です。あなたはreturn eをvoid関数に書くべきではないので、=>も使用しないでください。

だけ書く:

void toggle() { isOpen = !isOpen; } 
関連する問題