LoginSignup
33
28

More than 5 years have passed since last update.

Swiftのreturnでハマった

Last updated at Posted at 2015-02-13

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でセミコロンを省略するときは文の区切りが思った通りになっているか注意が必要です。

他に方法があればどなたか教えてください。

33
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
28