2016-08-30 3 views
1

Wie könnte ich den Operator "=>" in booleschen Ausdrücken verwenden? Zum Beispiel ist die folgende Erklärung falsch, da „isOpen = isOpen!“ Einen Booleschen Wert zurückgibt:Verwenden Sie den Operator => in booleschen Ausdrücken

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

Ich war in so etwas wie dies zu denken:

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

Wo shutUp() ist eine Funktion, gibt einen void Wert zurück und akzeptiert alle booleschen Parameter.

Antwort

2

So:

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

Thansk. Es ist seltsam, aber es funktioniert. – Cequiel

+0

=> x ist eine Kurzschrift für {return x; }. So kann eine Funktion geschrieben werden als: toggle() => isOpen =! IsOpen; und eine anonyme Funktion ist die gleiche, nur ohne einen Namen:() => isOpen =! isOpen ;. [Mehr dazu hier.] (Https://www.dartlang.org/resources/dart-tips/dart-tips-ep-7) – Alvis

+0

Es ist nicht seltsam, dass es funktioniert. Es ist fast das Gleiche wie 'bool toggle() => isOpen =! IsOpen;', nur in einer mehr verschachtelten Weise geschrieben. Ein Weg, der wahrscheinlich auch bei Methoden nicht funktioniert - Sie können eine 'void toggle()' Methodensignatur nicht mit 'var toggle' implementieren. Ich empfehle nicht, diese Lösung zu verwenden. – lrn

1

Dart Sprache erlaubt die Expression als Funktion verwenden.
Diese Funktion wurde Funktionsausdruck genannt.
Diese Funktion ermöglicht, dass der Ausdruck Parameter enthalten kann.

Beispiel.

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

In diesem Fall Lexem => kein Bediener braucht bedeutet. Es bedeutet ein Lexem, das den Anfang des Funktionskörpers (des Funktionsausdrucks) markiert.

Dies ist nicht die einzige mögliche Syntax für die Verwendung von Funktionsausdrücken. Es war nur ein Beispiel für das Verständnis.

1

Sie sollten nicht => für ungültige Funktionen verwenden.

Wie Mezoni schreibt, => e ist Kurzschreibweise für { return e; }. Sie sollten return e nicht in eine void-Funktion schreiben, daher sollten Sie auch => nicht verwenden.

Schreiben Sie einfach:

void toggle() { isOpen = !isOpen; } 
Verwandte Themen