LoginSignup
12
11

More than 5 years have passed since last update.

Swift入門 勉強記録 その8 条件分岐

Last updated at Posted at 2014-09-23

 
・Swiftに関する他の記事はこちら
Swift入門 勉強記録 その1 Swiftとは、Playground起動

Swift入門 勉強記録 その2 変数、定数、文字列

Swift入門 勉強記録 その3 セミコロン

Swift入門 勉強記録 その4 数値、真偽値

Swift入門 勉強記録 その5 Tuple(組)とは

Swift入門 勉強記録 その6 数値を文字列とするには

Swift入門 勉強記録 その7 繰り返し

Swift入門 勉強記録 その8 条件分岐

Swift入門 勉強記録 その9 Optional型

Swift入門 勉強記録 その10 Collection

if文

if文を使った条件分岐の基本は下記3通り。
・if 〜
・if 〜 else 〜
・if 〜 else if 〜 else 〜

試す。

まずはif 〜。

ループ変数が5になったら、お知らせするぞ。
```
import UIKit

let myName = "Yamada Taro"

for i in 1...5{

println("\(i) - \(myName)")

if i == 5{
    println("iが\(i)になったんだー")
}

}
```

スクリーンショット 2014-09-22 21.50.08.png

次! if 〜 else 〜。
ループ変数が5のときは小文字、それ以外は大文字で表示するぞ。

import UIKit

let myName = "Yamada Taro"

for i in 1...5{

    if i == 5{
        println("\(i) - \(myName)")
    }else{
        println("\(i) - \(myName.uppercaseString)")
    }
}

スクリーンショット 2014-09-22 21.53.40.png

次! if 〜 else if 〜 else 〜。
ループ変数が5のときは小文字、
2のときは「2だね!」、それ以外は大文字で表示するぞ。

import UIKit

let myName = "Yamada Taro"

for i in 1...5{

    if i == 5{
        println("\(i) - \(myName)")

    }else if(i  == 2){
        println("2だね!")

    }else{
        println("\(i) - \(myName.uppercaseString)")
    }
}

スクリーンショット 2014-09-22 21.57.22.png
 

なお、Swift勉強記録 その4 数値、真偽値の「Objective-Cとの違い」で書いたが、条件の部分はtrue/falseでなければならない。

if文で{}なしはエラー

Objective-Cでは{}なしでif文を書くことができた。
Swiftで書くなら↓のようになる。

import UIKit

let myName = "Yamada Taro"

for i in 1...5{

    if i == 5
        println("\(i) - \(myName)")

    else
        println("\(i) - \(myName.uppercaseString)")

}

Swiftではエラーになるので、↓のとおりだ。

スクリーンショット 2014-09-22 22.11.53.png

バグになりそうなトリッキーな書き方をなくしたというところだろう。
if文のなかにさらにif文があるときなど、
{}がないと読みにくかったので、個人的にはうれしい。

switch文

switchで指定するのと同じ値がcaseの後ろにあれば、
その中の処理を実行します。
↓のような書き方だ。

switch ** {

case AA:
break

case BB:
break

default:
break

}

試す。

import UIKit

let country = "Japan"

switch country{

    case "France":
        println("Yes,France")

    case "Brasil":
        println("Yes,Brasil")

    case "Japan":
        println("Yes,Japan")

    default:
        println("No")

}

スクリーンショット 2014-09-22 23.08.14.png

countryの値を変えて試すのもいいでしょう。

switch文のObjective-Cとの違い

この内容をObjective-Cで書くなら、このように書くのだろう。

typedef NS_ENUM (int, kCountry) {
            kFrance = 0,
            kBrasil = 1,
            kJapan = 2,
            kOther = 9
        };

        int country = 2;
        switch (country) {
            case kFrance:
                NSLog(@"Yes,France");
                break;

            case kBrasil:
                NSLog(@"Yes,Brasil");
                break;

            case kJapan:
                NSLog(@"Yes,Japan");
                break;

            default:
                NSLog(@"No");
                break;
        }

Swiftのときと比較して気づくのは

1.switchの後にある比較対象に()は必要ない

2.switchの後にある比較対象がSwitchでは数値でなくてもよい。オブジェクトでもいいのだ。

3.Swiftではcaseの中の処理の最後にbreakをいれなくても、処理を終了する。Objective-Cではbreakを入れなければ、次にあるcaseの仲の処理が実行されてしまうので、Swiftでは注意が必要だ。

さらに、Swiftではこんな書き方もできる。
caseのうしろに2つの値を入れられる。

import UIKit

let country = "Germany"

switch country{

    case "France", "Germany":
        println("Yes,EURO")

    case "Brasil":
        println("Yes,Brasil")

    case "Japan":
        println("Yes,Japan")

    default:
        println("No")

}

スクリーンショット 2014-09-22 23.44.41.png

まだまだ!!!こんなふうにもいける!
範囲を指定できるんだ。

import UIKit

let score = 10

switch score{

    case 0..<60:
        println("がんばった")

    case 61..<80:
        println("やるね")

    case 81..<100:
        println("ひゃっはー")
    default:
        println("お前、何点だ")

}

スクリーンショット 2014-09-22 23.49.46.png

switch文はObjective-Cと比べるとかなり柔軟になり、使う機会が増えそう。

今回はここまで。

 

・Swiftに関する他の記事はこちら
Swift入門 勉強記録 その1 Swiftとは、Playground起動

Swift入門 勉強記録 その2 変数、定数、文字列

Swift入門 勉強記録 その3 セミコロン

Swift入門 勉強記録 その4 数値、真偽値

Swift入門 勉強記録 その5 Tuple(組)とは

Swift入門 勉強記録 その6 数値を文字列とするには

Swift入門 勉強記録 その7 繰り返し

Swift入門 勉強記録 その8 条件分岐

Swift入門 勉強記録 その9 Optional型

Swift入門 勉強記録 その10 Collection

12
11
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
12
11