Swiftで行末の;を省略して書いていると、returnが想定外の動きになっていました。
メソッド(関数)の途中でreturnと書くと次の行以降は実行されず、メソッドから抜けると思っていたのですが、違いました。
test.swift
func methodA() {
処理A
return
処理B
...
}
となっていて、エラーの原因を探るためにreturnの場所を変えながらデバッグしていたら、なぜか処理Bが実行されているように見えました。
test.swift
func methodA() {
処理A
return
println("return")
...
}
と書いてびっくり、コンソールにreturnと出力されてる!と思いました。returnのあとにセミコロンがないと文の区切りとはみなされないので、次の行が評価されてしまいます。
引数なしのメソッドからはreturn[改行]ですぐ抜けられると勝手に思っていました。
よく考えれば、returnは値を返す文なので当たり前です。
このような場合、処理Bを実行せずに抜けるには
test.swift
func methodA() {
処理A
return;
処理B
...
}
というようにセミコロンが必要なようです。
Objective-Cではセミコロンが必須だったのでこのようなミスはありませんが、Swiftでセミコロンを省略するときは文の区切りが思った通りになっているか注意が必要です。
他に方法があればどなたか教えてください。