社畜系WEBエンジニアの消耗戦

読者です 読者をやめる 読者になる 読者になる

社畜系WEBエンジニアの消耗戦

修羅の国でせっせと働く社畜系WEBエンジニアのブログ

【詳細!Swift3】Swiftの基本構文を学ぶ part2

さて、今回は制御構文まわりの話をしていきましょう。と言っても基本的には他の言語とそう変わらないですけどね。

if文

まぁ見慣れた形なので、特に補足することはないです。条件式はいくつか記法があるみたいですが、とりあえず基本形で書ければ特に問題はなさそうなので、とりあえずは覚えません。Swift的な書き方ががががなんていうのは、二の次ですね。

if () {
    // 処理
} else if () {
    // 処理
} else  {
    // 処理
}

switch文

記法はよく見るこの形。レンジとかタプルを使ってちょっと便利に書けるっぽいですが、そういうのは実際に使うときに詳しく調べればいいでしょう。

switch {
    case :
        // 処理
    case :
        // 処理
default: 
    // 処理
}

一点、Swiftでは、breakを記述しなくてもcaseに入ったら抜けます。普通はbreakしないと抜けないですよね。でも、Swiftは抜けます。逆に抜けさせたくないときは、fallthroughキーワードで同様のことを実現します。fallthroughを書くことで、次のcaseを実行する形です。

繰り返し構文

繰り返しは、for-inwhilerepeat-whileが使えます。まぁよく使うケースとしては、for-inかな?PHPとかでもwhile文使うことは滅多になかったですし。

for-in

レンジ指定だとこんな感じ。

for i in 1...5 {
    print("\(i)times")
}

ただ繰り返す(変数を使わない)場合は、_で代用できます。まぁこれも使ってなかったらXcodeが教えてくれるんですけどね。

for _ in 1...5 {
    print("hello")
}

あとは配列とかも同様に使えて、まぁforeach的な使い方もできます。多分、実際のユースケースとしては、こっちの方が多いかな。なんかAPIで取ってきたデータをループで回して処理する感じ。

while

条件がtrueの間繰り返すやつですね。書式は以下。他の言語となんら変わらんですね。

while () {
    // 処理
}

repeat-while

whileとあんまり変わらないんですが、こっちは処理の後に条件式を評価する。つまり「最低一回は処理が実行されます」。実際使うかどうかは、、ちょっと微妙な感じはします。ま、こういうのもあるよーってことだけ。

repeat {
    // 処理
} while ()

continue、break

他の言語と同じく、処理を抜けたりしたい時はcontinuebreakを使います。まぁ使い方は知ってると思うのでここでは触れませんが、「任意のループを」指定できます。そう、Swiftならね。

xloop: for x in 0...3 {
    yloop: for y in 0...3 {
        if (x < y) {
            print("-------")
            continue xloop
        }
        print((x,y))
    }
}

// (0, 0)
// -------
// (1, 0)
// (1, 1)
// -------
// (2, 0)
// (2, 1)
// (2, 2)
// -------
// (3, 0)
// (3, 1)
// (3, 2)
// (3, 3)

普通にcontinueしちゃうと次のyloopに移っちゃいますが、これだと次のxloopにいってくれます。無駄な処理が省けていいですね。これはbreak文も同じで、ラベルを貼っちゃえば外側のループもbreakできます。

おわりに

ちょっと独特な記法もありますが、このあたりは基本的に変わらないと思って問題なさそうですね。楽ちん楽ちん。