obo.dev

Используем `switch` и `if` как выражения

10 Oct 2022

Удобный способ использовать switch и if как выражения

Операторы управления потоком switch и if используются, внезапно, как операторы. Что делать если очень хочется использовать их как выражение?

Можно сделать generic функцию:


func resultOf<T>(_ code: () -> T) -> T {
  return code()
}

Теперь можно обернуть операторы в эту функцию и делать вот такие вещи:


let randomInt = Int.random(in: 0...3)

let spelledOut: String = resultOf {
  switch randomInt {
    case 0:
      return "Zero"
    case 1:
      return "One"
    case 2:
      return "Two"
    case 3:
      return "Three"
    default:
      return "Out of range"
  }
}

print(spelledOut)