後述するコードの挙動が納得できません。
※特に、挙動確認パターン3と4が納得できません
【ドキュメントにこう書いてあるよ】、とか、【◯◯という理由でそのような挙動になるのだと思います】、と言ったご意見等をいただけると助かります。
自分の中では、【そういう仕様であるということを受け入れる】という結論にしています。
問題のコードはこちらです。
lang
1var nilValue1: String? = nil 2 3// 挙動確認パターン1 4if let hoge = nilValue1 { // " hoge は nil です。" 5 println(" hoge は nil ではありません。") 6} else { 7 println(" hoge は nil です。") 8} 9 10// 挙動確認パターン2 11if let hoge: String = nilValue1 { // " hoge は nil です。" 12 println(" hoge は nil ではありません。") 13} else { 14 println(" hoge は nil です。") 15} 16 17// 挙動確認パターン3 18if let hoge: String! = nilValue1 { // " hoge は nil ではありません。" 19 println(" hoge は nil ではありません。") 20} else { 21 println(" hoge は nil です。") 22} 23 24// 挙動確認パターン4 25if let hoge: String? = nilValue1 { // " hoge は nil ではありません。" 26 println(" hoge は nil ではありません。") 27} else { 28 println(" hoge は nil です。") 29}
挙動確認パターン3と4も【hoge は nil です】と表示されることを期待していましたが、実際の挙動は違っていました。
let 宣言した hoge 変数に Optional な型を書いたことによって、
その if 文の行ではアンラップされないからなのでは?と推測しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。