(swift)if判定して値を返して変数に直接に入れるみたいな - if式 (その2)
2024/06/02
swift
メモを帳をみなさんどうしていますか。
ぜひおすすめなのでトラベラーズノート。
トラベラーズノート(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)してみたいですね
: