見出し画像

楽しい!Swift。 - A Swift Tour (Control Flow-1)

if 又はswitchfor-in又はwhile又はrepeat-while

を使っていきます。

配列の一つ一つの値を"50"と比べていきます。連続して比べていくので、 for-inを使っています。

50より多ければスコアを3、そうでなければ1を 変数"teamScore"に足していきます。比べるのは"if"を使います。比較はbool値(真偽値)と呼ばれるものが必要でここでは

score > 50

となります。変数"score"が50より大きいのが、違えばになります。真の場合に次の処理に進みます。
そして最後に"print()"で出力します。

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
    if score > 50 {
        teamScore += 3
    } else {
        teamScore += 1
    }
}
print(teamScore)
// Prints "11"

引き続き10以上であれば絵文字も出します。

代入時の等号(=)の後ろや return の後に、if または switch を書くことができます。

let scoreDecoration = if teamScore > 10 {
    "🎉"
} else {
    ""
}
print("Score:", teamScore, scoreDecoration)
// Prints "Score: 11 🎉"


次にオプショナルという機能です。これは"ない(nil)"可能性を定義して、"ある"ものと区別する方法となります。

"あるかも知れない"が今は"ある"もしくは"ない"ということを定義します。

var optionalString: String? = "Hello"
print(optionalString == nil)
// Prints "false"


var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}

値をオプショナルにするには、値の型の後ろにクエスチョンマーク(?)を書きます。

var optionalString: String? = "Hello"

これでoptionalStringはオプショナルに対応できるようになります。

オプショナルすることで

print(optionalString == nil)

を実行すると"false"となり、bool値(真偽値)になっていることがわかります。

この性質を利用して

if let name = optionalName {
    greeting = "Hello, \(name)"
}

if letを使ってオプショナル型の変数がnilかどうかを確かめるとともに、アンラップした値を定数に格納する方法をオプショナルバインディングと言います。アンラップすると使える範囲が広くなります。

次の例では??を使って真偽の使い分けができるようにしています。最初の変数がnilでなければそのまま採用(??の前を採用)、nilの場合は後のものを使う仕組みとなっています。

let nickname: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi (nickname ?? fullName)"

if letでアンラップ後の変数の名前と同名を用いる場合、右辺を省略することができます。

if let nickname {
    print("Hey, \(nickname)")
}


参考

アンラップ

オプショナル型


この記事が気に入ったらサポートをしてみませんか?