6. テキスト
例文
// 基本形
let age = 20
if age >= 20 {
print("成人してます!")
}
else {
print("未成年です")
}
// 条件が複数ある場合
if age >= 18 {
print("大学生です")
}
else if age >= 15 {
print("高校生です")
}
else if age >= 12 {
print("実は魔族だった私は中学生……少なく
}
else {
print("小学生です")
}
// elseは省略可能
if age >= 20 {
print("成人してます!")
}
10. テキスト
例文
// 基本形
let age: Int? = 20
if let a = age {
print("僕は (a)歳です!")
}
else {
print("年齢はありません")
}
// if-let + 条件分岐
let age: Int? = 20
if let a = age, a >= 20 {
print("僕は (a)歳で、成人してます!")
}
16. テキスト
例文
func parseResponse(responseData: [String: Any]?) -> String? {
// check response
guard let data = responseData else {
print("response data is empty")
return nil
}
guard let id = data["id"] as? String else {
print("user id is not found.")
return nil
}
return id
}
ネットワーク経由で取得したデータをパースする
24. テキスト
範囲マッチング
▸ 演算子のときに利用した 範囲演算子を利用してマッチングさせることも可能
▸ Intの場合は値が 10~20だったらという形
let age = 20
switch age {
case 16...18:
print("成人です")
case 13..<16:
print("中学生です")
case 6..<13:
print("小学生です!")
default:
print("バブー!")
}
27. テキスト
タプルマッチング
▸ 先ほど説明したTupleを利用してマッチングさせることも可能
▸ tupleの要素の数や値でマッチングさせる
switch user {
case let (age, name):
print("user is age: (age), name: (name)")
case (let age, "hogefuga"):
print("user is age: (age), name: hogefuga")
case (20, let name):
print("user is age: 20, name: (name)")
case (20, "hogefuga"):
print("user is age: 20, name: hogefuga")
case let (age, name, gender):
print(“マッチしません")
default:
print("something else")
}
31. ENUMマッチング
enum NetworkError {
case authError
case unexpectedData
case unknownError
case nilResponse
}
switch error {
case .authError:
print("認証に失敗しました")
case .unexpectedData:
print("不正なデータです")
case .unknownError:
print("よくわかりませんがエラーです(^q^)")
case .nilResponse:
print("レスポンスが空っぽです")
case .timeout:
print("サーバーから応答がありません")
}
32.
33. もう一度
enum NetworkError {
case authError
case unexpectedData
case unknownError
case nilResponse
}
switch error {
case .authError:
print("認証に失敗しました")
case .unexpectedData:
print("不正なデータです")
case .unknownError:
print("よくわかりませんがエラーです(^q^)")
case .nilResponse:
print("レスポンスが空っぽです")
case .timeout:
print("サーバーから応答がありません")
}
34. もう一度
enum NetworkError {
case authError
case unexpectedData
case unknownError
case nilResponse
}
switch error {
case .authError:
print("認証に失敗しました")
case .unexpectedData:
print("不正なデータです")
case .unknownError:
print("よくわかりませんがエラーです(^q^)")
case .nilResponse:
print("レスポンスが空っぽです")
case .timeout:
print("サーバーから応答がありません")
}
defaultがない!