感想
今日は米の浸水中にやったので余裕があっていい.いつも退勤後にご飯炊くときは微妙な時間があったので助かる.
そういえば,はてブってIFTTT連携できるんだろうか?twitterにも流したい気がしてきた.
今日書いたコード
今日はOptionalの節だったので結構長かった.モデリングするとき適切にOptionalを使っていれば,気づけなかった分岐にコンパイラが気づいてくれるのでOptionalは好き.
初めて知ったこと
implicitly unwrapped optionalはまず普通のoptionalとして扱われ,そうできないときはforce-unwrapされる.
When you use an implicitly unwrapped optional value, Swift first tries to use it as an ordinary optional value; if it can’t be used as an optional, Swift force-unwraps the value.
https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID334
(1)ではoptionalとして扱われるのでoString
の型はString?
になる.(2)でも同様にoptionalとして扱われるのでunwrapして値にアクセスできるが,(3)ではforce-unwrapされる.このときiuoString
はnilなのでランタイムエラーで落ちる.
var iuoString: String! = "implicitly unwrapped optional string" // (1) var oString = iuoString iuoString = nil oString = nil print(iuoString) // => nil print(oString) // => nil print(iuoString?.count) // => nil // (2) print(oString?.count) // => nil // (3) print(iuoString.count) // 落ちる // print(oString.count) // コンパイルできない