見出し画像

Swiftで行こう!--スタンフォードで電卓!4

スタンフォードで電卓!1, スタンフォードで電卓!2, Swiftで行こう!,スタンフォードで電卓!3に引き続きやっていきます。

算術式を追加しています。

@IBAction func performOperation(_ sender: UIButton) {
       userIsMiddleOfTyping = false
       
       if let mathematicalSymbol = sender.currentTitle{
           switch mathematicalSymbol {
           case "π":
               display.text = String(Double.pi)
           case "√":
              let operand = Double(display.text!)
              display.text = String(sqrt(operand!))
           default: 
               break
           }
           
       }

追加は、 "√"、sqrt()を使います。

     case "√":
              let operand = Double(display.text!)
              display.text = String(sqrt(operand!))

ですね。StoryBoardのでも紐ずけしています。そして、

display.text = String(Double.pi)

let operand = Double(display.text!)
display.text = String(sqrt(operand!))

この2つを効率的にするために計算型プロパティを使います。get,setを使って

   var displayValue:Double{
       get {
          return Double(display.text!)!
       }
       set {
           display.text = String(newValue)
       }
   }

変数displayValueとしては、Double(display.text!)ということで文字列からDouble型へと変換しています。使いどころとしては、

let operand = Double(display.text!)

としてまずDouble型へ変換していますが、これに変えてdisplayValue"get"を使ってやれば、変数operandは必要無くなりますね。そして"set"を使って文字列に変換します。文字列に変換するときは"newValue"のところに新しい値を入れれば良いので、

if let mathematicalSymbol = sender.currentTitle{
           switch mathematicalSymbol {
           case "π":
               displayValue = Double.pi
           case "√":
               displayValue = sqrt(displayValue)
           default: 
               break
           }

"π"では"newValue"に当たるものは、"Double.pi"になり、

"√""newValue"に当たるものは、"sqrt(displayValue)"、この時に"sqrt"で変換する値は、"displayValue""get"で値を取得しています。

この辺少し頭を整理しながらコードを書いていかないとややこしいですね。

全体のコードです。

ここで一つ目の講義は終わっています。次の単元ではMVCの概念を使ってさに進めていきます。

この記事が気に入ったらサポートをしてみませんか?