ぜのぜ

しりとりしようぜのぜのぜのぜ

9日目 1日2分だけコード書くやつあとブログ書くやつ

感想

今日は米の浸水中にやったので余裕があっていい.いつも退勤後にご飯炊くときは微妙な時間があったので助かる.

そういえば,はてブって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される.このときiuoStringnilなのでランタイムエラーで落ちる.

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) // コンパイルできない