2016-07-29 5 views
0

Swiftのifステートメントとオプションを使用したロジックウォークスルーの質問。スウィフトIfオプション(電卓Stanford/Youtubeより)

電卓のラベルでゼロが削除されてしまい、それがなぜ起こったのかわかりません。

スタンフォード・ユーチューブの動画の中の約1:10:03の動画はこちら:https://youtu.be/_IRx1zoriPo?t=1h10m3s

コード:

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 

    } 

} 

当初プログラムが実行され、ラベルに設定されたゼロデフォルトでは表示です。 userIsInTheMiddleOfTypingはfalseであるため、elseブロックが実行され、電卓にゼロが表示されます。その後、trueに設定されます。

これは2回目以降は真で、押されたものはすべて表示されます。押されたものは、ディスプレイにあるものに連結されます。

だから、ディスプレイがゼロに置き換わるようなことは何が起こったのですか?初期値は連結されずにどのように置き換えられましたか?

ここでは異なるコードを探しているわけではありません。これは単なる例です。どんな助けもありがたい。乾杯

答えて

0

私はそれを話して解決したと思います。最初はboolがfalseであるため、最初のキーを押すとelseブロックがヒットし、押されたキーはゼロの表示に置き換えられます。 boolはtrueに設定されます。その後のすべての印刷は真となり、連結されます。

1

touchDigitはアクションです。それはuserIsInTheMiddleOfTypingがfalseのいずれかのボタンが押されていない限り

最初のプログラムが実行され、ラベルに設定されたゼロのデフォルト表示に

で正しい

を実行しません。 elseブロックは実行されます

間違っています。ボタンが押されていないためにメソッドが実行されない