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の概念を使ってさに進めていきます。