★ Int
let code = 1001
switch code {
case 200:
print("Success")
case 300, 301, 302:
print("Redirect")
case 400...499:
// Closed Range Operator
print("Not Found")
case 500..<600:
// Half-Open Range Operator
print("Error")
case let status where status >= 1000:
// Where
print("Invalid")
fallthrough
default:
break
}
★ enum
enum Season {
case Spring
case Summer
case Autumn
case Winter
}
let season = Season.Summer
switch season {
case .Spring, Season.Summer:
print("Spring or Summer")
case .Autumn:
print("Autumn")
case .Winter:
print("Winter")
}
★ Tuple
func FizzBuzz(value: Int) -> String {
switch (value % 3, value % 5) {
case (0, 0): return "Fizz Buzz"
case (0, _): return "Fizz"
case (_, 0): return "Buzz"
case (_, _): return "\(value)"
}
}
FizzBuzz(9)
//=> "Fizz"
★ Optional
func countryName(identifirer: String?) -> String? {
switch identifirer {
case "JP"?: return "Japan"
case "GB"?: return "England"
case "US"?: return "U.S.A"
default: return nil
}
}
var a = countryName("a")
//=> nil
var b = countryName("JP")
//=> Japan