カウントアップ、カウントダウンできるStepperを実装します
@State var kosu:Int = 0 var body: some View { Stepper(value: $kosu, in: 0...10, step: 2){ Text("個数: \(kosu)") } .frame(width: 200) }
単価と個数から料金を計算して表示する
@State var kosu:Int = 0 let tanka = 240 let tax = 0.1 var body: some View { VStack(alignment: .leading, spacing: 20) { Text("1個 \(tanka)円") Stepper(value: $kosu, in: 0...10, step: 2){ Text("個数: \(kosu)") }.frame(width: 200) let price = tanka * kosu let result = Int(Double(price) * (1 + tax)) Text("料金:\(result) 円").font(.headline) + Text("(税込)").font(.footnote) } }
料金計算を別の関数として計算する
var body: some View { VStack(alignment: .leading, spacing: 20) { Text("1個 \(tanka)円") Stepper(value: $kosu, in: 0...10, step: 2){ Text("個数: \(kosu)") }.frame(width: 200) Text("料金:\(calc(kosu)) 円").font(.headline) + Text("(税込)").font(.footnote) } } func calc(_ num:Int) -> Int { var price = tanka + num price = Int(Double(price) * (1 + tax)) return price }
Computedプロパティで計算して料金表示
var price:Int { var value = tanka * kosu value = Int(Double(value) * (1 + tax)) return value } var body: some View { VStack(alignment: .leading, spacing: 20) { Text("1個 \(tanka)円") Stepper(value: $kosu, in: 0...10, step: 2){ Text("個数: \(kosu)") }.frame(width: 200) Text("料金:\(price) 円").font(.headline) + Text("(税込)").font(.footnote) } }
### 外部引数名がない関数
func hoge(_ num:Int) として、hoge(2) などで呼び出して実行できる
let tanka = 240 func calcA(num:Int) -> Int { let price = tanka * num return price } func calcB(kosu num:Int) -> Int { let price = tanka * num return price } func calcC(_ num:Int) -> Int { let price = tanka * num return price } let priceA = calcA(num: 2) let priceB = calcB(kosu: 2) let priceC = calcC(2)
なるほど、いわゆるライブラリみたいなのがswiftにdefaultで実装されていて、それを使うことで色々な表現ができるのね。