プログラマメモ2 - programmer no memo2

(swift)if判定して値を返して変数に直接に入れるみたいな - if式 (その2) 2024/06/02

メモを帳をみなさんどうしていますか。

ぜひおすすめなのでトラベラーズノート。
トラベラーズノート(amazon)

「must be a single expression」という制約

このような書き方はできない


do { // この書き方はできない
    // let s: Int? = 100
    // let a = if let a = s {
    //     let b = a + 100
    //     String(format: "ok \(b)")
    // } else {
    //     String(format: "not 100")
    // }
    // print("*** ok a:\(a)")
}

クロージャ(無名関数?)を使えばいいのではないかという結論


do { // 中身をクロージャにすると複数行でもかける
    let s: Int? = 100
    let a = if let a = s {
        { let b = a + 100
            return String(format: "ok \(b)")
        }()
    } else {
        String(format: "not 100")
    }
    print("*** ok a:\(a)")
}

僕にとって、if式がなぜそんなに嬉しいのか。

手続きで考えれば、ある変数に値を編集して入れる場合、編集する内容を、代入する変数の前に書くのがまあ普通のことかと思います。
ただ、どうも僕はそのような書き方が好きでないようなんですよね。
まあ、多くの人にとってはたいした問題ではないと思いますが、このif式のような書き方(表現の仕方)が、いいんですよね...もうちょっと深掘り(deepなdive)してみたいですね

: