今でしょ!Swift - ブール、タプル、オプショナル
基本的な便利機能です。
ブール値
まず
let orangesAreOrange = true
let turnipsAreDelicious = false
と定義しておき、これを使って判別をします。"if"を使った条件分岐です。
if turnipsAreDelicious {
print("Mmm, tasty turnips!")
} else {
print("Eww, turnips are horrible.")
}
turnipsAreDeliciousは"false"と定義しているのでif文のelseが選択され、
"Eww, turnips are horrible."
が出力されます。この場合はturnipsAreDeliciousの真偽(ブール値)で判定しています。
if文で比較をする場合に気を付けることとしては、比較する場合は
let i = 1
if i == 1 {
// コンパイルできます
}
とすること、
比較は"=="を使うことに注意します。これを使うことで同じであるかどうかというブール値にすることができます。
タプル
配列、辞書などでもひとまとめにすることができますがもっと制約少なく簡単に使うことができます。
let http404Error = (404, "Not Found")
この例示は数字と文字が一緒にまとめてあります。
こんなこともできます。
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
print("The status message is \(statusMessage)")
変数を2つ同じく定義してそれぞれで出力しています。
必要なければアンダースコアを使って無効にできます。
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
片方はアンダースコアの定数(以下)を使って
インデックスによる呼び出し。
print("The status code is \(http404Error.0)")
"http404Error.0"は変数http404Errorのインデックス0番目なので、定義されているタプルから
インデックは頭から0,1・・・とついているので"0"番目は"404"ということになります。
The status code is 404
と出力されることになります。
値に名前をつけることもできます。
let http200Status = (statusCode: 200, description: "OK")
その名前を使用して各値へアクセスができます。
statusCodeは"200"なので、"The status code is 200"と出力されます。 descriptionだと"OK"と出ます。
オプショナル
オプショナルは、値が存在しないかもしれないときに使用します。
String を Int へ変換するイニシャライザの例。
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
nil
オプショナルな変数は、特別な値 nil を代入することで、値のない状態を設定することができます
オプショナルは特別な値となるので使う時にはアンラップの操作が必要になります。