LoginSignup
4
1

More than 3 years have passed since last update.

Swift いろいろ <ラベル>

Posted at

Label

ラベル

break文やcontinue文の制御の移動先の指定ができる機能

labelなし

for element in [1,2,3] {
    print("element: \(element)")

    for nestedElement in [1,2,3] {
        print("nestedElement: \(nestedElement)")
        break
    }
}

出力結果

element: 1
nestedElement: 1
element: 2
nestedElement: 1
element: 3
nestedElement: 1

こちらはbreakの制御範囲がnestedElementに限られているので、3回実行されました。

labelあり

label: for element in [1,2,3] {
    for nestedElement in [1,2,3] {
        print("for文")
        break label
    }
}

これだとwarningが出るかもしれないので
element → _
nestedElement → _
にするとでなくなりました。

出力結果

for文

なぜこのような挙動をするのか??

break ラベル名とすることにより、labelに指定した場所によって変化するので、
今回はlabelが1回目のループの外にあったので一気に2つのループを抜けたということになります。

補足

for element in [1,2,3] {
    label: for nestedElement in [1,2,3] {
        print("for文")
        break label
    }
}

出力結果

for文
for文
for文

こんなことも実装できます。

c言語のgoto文と同じように書けます。

4
1
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
4
1