[SwiftUI] Stepperでカウントアップ

カウントアップ、カウントダウンできる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で実装されていて、それを使うことで色々な表現ができるのね。