先日、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が初心者用の言語?今のところ、全然実感がないです… ^^;