テキスト
例文
// 基本形
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)歳で、成人してます!")
}
テキスト
例文
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
}
ネットワーク経由で取得したデータをパースする
テキスト
値マッチング
▸ シンプルに特定の値を指定してマッチングさせる方法
▸ Intの場合は値が10だったら, 20だったらという形
▸ カンマで区切って複数の値を並べることもできる
let age = 20
switch age {
case 20:
print("成人です")
case 13, 14, 15:
print("中学生です")
case 12:
print("小学生です!")
default:
print("バブー!")
}
テキスト
範囲マッチング
▸ 演算子のときに利用した 範囲演算子を利用してマッチングさせることも可能
▸Intの場合は値が 10~20だったらという形
let age = 20
switch age {
case 16...18:
print("成人です")
case 13..<16:
print("中学生です")
case 6..<13:
print("小学生です!")
default:
print("バブー!")
}
テキスト
タプルマッチング
▸ 先ほど説明したTupleを利用してマッチングさせることも可能
▸ tupleの要素の数や値でマッチングさせる
switchuser {
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")
}
ENUMマッチング
enum NetworkError {
caseauthError
case unexpectedData
case unknownError
case nilResponse
}
switch error {
case .authError:
print("認証に失敗しました")
case .unexpectedData:
print("不正なデータです")
case .unknownError:
print("よくわかりませんがエラーです(^q^)")
case .nilResponse:
print("レスポンスが空っぽです")
case .timeout:
print("サーバーから応答がありません")
}
33.
もう一度
enum NetworkError {
caseauthError
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 {
caseauthError
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がない!
テキスト
TYPE-CASTマッチング
▸ 型変換を使うもしくは特定の型を指定してマッチングさせるやり方
▸ 型変換を使う際は“as", 型を指定したい場合は “is” を使う
▸ できれば型変換を行うコードがないのが理想ではあるので使うことは
少ない(かも?)
let nyantyu: Animal = Cat(name: "nantyu")
switch nyantyu {
case let a as Cat:
print("猫でした(?)")
a.burk()
case is Dog:
print("犬です")
default:
print("動物ではありません")
}