2016-07-29 5 views
0

Logic Durchlauffrage mit if-Anweisung und Optionals in Swift.Swift If-Anweisung mit Optionals (von Rechner Stanford/Youtube)

Eine Null wird in der Rechnerbezeichnung gelöscht und ich folge nicht, warum das passiert.

Um 1:10:03 im Stanford Youtube Video hier: https://youtu.be/_IRx1zoriPo?t=1h10m3s.

Code:

import UIKit 

class ViewController: UIViewController { 

    // linked to label 
    @IBOutlet weak var display: UILabel! 

    var userIsInMiddleOfTyping = false 

    // linked to keys 0-9 
    @IBAction func touchDigit(sender: UIButton) { 
     let isDigit = sender.currentTitle! 

     if userIsInMiddleOfTyping { 
      let textCurrentlyInDisplay = display.text! 
      display.text = textCurrentlyInDisplay + isDigit 
     } else { 
      display.text = isDigit 
     } 
     // user now typing 
     userIsInMiddleOfTyping = true 

    } 

} 

Zunächst das Programm ausgeführt wird und die Null in dem Etikett gesetzt Standard ist in der Anzeige. Das userIsInTheMiddleOfTyping ist falsch, also wird der Else-Block ausgeführt und zeigt die Null im Taschenrechner an. Es ist dann auf wahr eingestellt.

Das zweite Mal ist es dann wahr und was auch immer gedrückt wurde ist jetzt im Display. Was gedrückt wurde, wird dann mit dem verkettet, was auf dem Display angezeigt wird.

Also was ist passiert, dass das Display jetzt die Null ersetzt? Wie wurde der Anfangswert ersetzt anstatt verkettet zu werden?

Ich bin nicht auf der Suche nach anderen Code hier, es ist nur ein beliebiges Beispiel. Jede Hilfe wird geschätzt. Prost

Antwort

0

Ich denke, ich habe es gelöst, indem ich es durchgesprochen habe. Anfangs ist der Bool-Wert false, so dass der Else-Block beim ersten Tastendruck gedrückt wird und die Anzeige von Null durch die Taste ersetzt wird, die gedrückt wurde. Das Bool wird dann auf "True" gesetzt. Alle nachfolgenden Pressen sind dann wahr und verkettet.

1

touchDigit ist eine Aktion. Es muss nicht ausgeführt werden, wenn eine der Tasten

Zunächst läuft das Programm und die Nullstandardsatz in dem Etikett ist

Correct

im Display

Die userIsInTheMiddleOfTyping falsch gedrückt werden So läuft der else Block

Falsch. Die Methode läuft nicht, weil keine Tasten gedrückt wurden.