Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active June 1, 2016 12:53
Show Gist options
  • Save KentarouKanno/7087a92305c86130d2cd to your computer and use it in GitHub Desktop.
Save KentarouKanno/7087a92305c86130d2cd to your computer and use it in GitHub Desktop.
Switch

Switch

★ 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment