先日、Swift の コーディングをうっかりミスしてしまっていたことに気づかず…
何が起きたのか全く見失ってしまい…たくさんの時間を浪費してしまいました…。
とても恥ずかしい内容ですが…戒めとして記録しておこうと思います…。
何をしてしまったかというと、以下のような for文 を書いてしまいました。
func test() {
var aaa: [Int]? = nil
var bbb = [ 1, 2, 3, 4 ]
aaa = bbb
//こういう記述をしてしまいました...
for c: Int? in aaa! {
print("c = \(c)")
}
print("!!!")
}
エラーにならずに実行できますが、for文が無限ループになります。
実際は、for文で処理した結果のdelegateの関数が呼ばれるはずなのに…何も起きない!? とパニックになってしまい…。
ずっと無関係のリファレンスを追っかけたり、仕様についてググったりしてました…orz
問題のfor文は、以下のように修正しました。
for c: Int in aaa! {
print("c = \(c)")
}
多分、こういう風にも書けるのかな。
for c: Int? in aaa {
if let c = c {
print("c = \(c)")
}
}
このミスの修正は、最後の最後まで自分で気づくことができず…結局、助けてもらいましたが、あまりに恥ずかしすぎて泣きそうでした…。 ^^;
Swift の ? ! ?? …の仕様は独特ですね…。
Swiftが初心者用の言語?今のところ、全然実感がないです… ^^;