2017-04-04 7 views
0

Ich stieß auf den folgenden Code und konnte nicht herausfinden, was genau hier passiert. Ich versuchte, sie auf dem Spielplatz und in der Lage, die Ausgabe zu manipulieren, aber Hilfe benötigen Sie den Code in das VerständnisWas bedeutet a = b == c bedeutet in swift

myButton.isHidden = view.getButtonVisibleState() == false 
+0

Ist dies der Gesamtcode? Nein, wenn Block oder etwas Ähnliches es einwickelt? – paper1111

+5

Operator == hat Vorrang vor =, daher wird die Anweisung schließlich - 'myButton.isHidden = (view.getButtonVisibleState() == false)'. Es scheint, dass Sie neu in der Programmierung sind. Ich würde vorschlagen, dass der Operator Vorrang hat, um zuerst zu studieren. https://en.wikipedia.org/wiki/Order_of_operations. Dies ist nicht spezifisch für Swift, das ist nur eine Kurzform. –

+3

Äquivalent: 'myButton.isHidden =! View.getButtonVisibleState()' –

Antwort

4

Zuweisungsoperator (=): Er wird verwendet, um den Wert der Variablen auf der linken Seite zuzuweisen.

Gleicher Operator (==): Es wird verwendet, um zwei Variablen zu vergleichen.

Also für a = b == c bedeutet

Erste b & c vergleichen, wenn sie gleich sind, dann gibt es wahr c andernfalls gibt es falsch bis c. So wird c der Wert zugewiesen.

Also für Ihre Ausgabe myButton.isHidden = myView.getButtonVisibleState() == false

Sie den Wert auf die myButton.isHidden zuweisen als wahr oder falsch.

So Compiler zunächst prüfen, ob myView.getButtonVisibleState() nicht sichtbar ist dann die Aussage myView.getButtonVisibleState() == false wird wahr und ordnet die myButton.isHidden = true

sonst myButton.isHidden = false

2

entspricht Pseudocode:

if (view.getButtonVisibleState() == false) then 
myButton.isHidden = true 
else 
myButton.isHidden = false 

Sie verwenden den Booleschen Wert des Tests und zuweisen, die auf die Variable direkt, um den Code kürzer zu machen.

2

Ich gehe davon aus Sie den Unterschied zwischen Zuordnung (=) kennen und relational ist gleich (==).

Es ist Zeit, um Ihre Kopie der Operator Vorrang Tabelle. Beim Einsetzen der überflüssigen Klammern Ihre Aussage wird

myButton.isHidden = (view.getButtonVisibleState() == false)

So können Sie sehen, dass es myButton.isHidden zu true wenn view.getButtonVisibleState() ist false, und umgekehrt setzt.

Mit anderen Worten, es ist ein einfaches Umschalten und

myButton.isHidden = !view.getButtonVisibleState()

ist wahrscheinlich klarer.