4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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が出るかもしれないので

nestedElement → _
```にするとでなくなりました。

#### 出力結果

for文

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

#### 補足
```swift
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?