Swiftのきほん -if文とswitch文-
if
やswitch
を使えば条件分岐、for-in
やwhile
やrepeat-while
を使えばループ処理ができる。
処理を記述する部分は「{ }(中括弧)」で囲う。
let memberScore = [5, 7, 3, 9] var teamScore = 0 for score in memberScore { if score > 5 { teamScore += 2 } else { teamScore += 1 } } print(teamScore) -> 6
if文
ifの条件式は常に論理式
暗黙的に0と比較しようとif 変数 {…}
と書くとエラーになる。
var hogeScore = 100 if hogeScore { print("Not safety") } -> error: 'Int' is not convertible to 'Bool'
ifとletでオプショナル型の表現(Optional Binding)
オプショナル型の変数は「値が含まれている」、「nil」のどちらもいける両刀使い。 オプショナル型の変数を宣言するには型の後ろに「?」をつける。
var optionalString: String? = "I'm opptional!" print(optionalString == nil) ->false
ifとlet(varでも可能)を組み合わせることで変数に値があるか、欠けている(nil)かで条件分岐。
オプショナル型変数に値が含まれていればアンラップされた値が変数に代入され、変数がnil
ならfalse
となって処理はスキップされる。
変数に値がある場合
var userName: String? = "Sota" var greeting = "Hello!" if let name = userName { greeting = "Hello, \(name)" } print(greeting) -> Hello, Sota
変数に値がない(nil)場合
var userName: String? var greeting = "Hello!" if let name = userName { greeting = "Hello, \(name)" } print(greeting) -> Hello!
オプショナル型にデフォルト値を与える
??
オペレータを使うことで値がnil
の場合のデフォルト値を与えることができる。
var userName: String? = nil let anonymName: String = "Nanashi" var greeting = "Hi \(userName ?? anonymName)" print(greeting) -> Hi Nanashi
Switch文
Switchはあらゆる値、比較演算に対応している。
default
ケースを設定しないと「網羅的でない」としてエラーになる。
where句を使いlet 変数 where 条件式
(var 変数
でもok)とすることで、特定の条件を指定して処理を行うことも可能。
(.hasSuffix()
メソッドは、引数の文字列が変数内の文字列の「末尾」に含まれていればTrueを返す)
import Foundation //.hasSuffixのためにインポート var userJob = "Unemployed" switch userJob { case "Office Worker": print("Soso") case "Entreprenuer", "Investor": //カンマ区切りでor print("Money Happy Pesron") case let x where x.hasSuffix("employed”): print("Are you Unemployed?") default: print("Enter your Job!") } -> "Are you Unemployed?"