Skip to content

Instantly share code, notes, and snippets.

@0xLeif
Created July 7, 2020 19:49
Show Gist options
  • Save 0xLeif/00795075c39180ca4cdbe63c9d1655f4 to your computer and use it in GitHub Desktop.
Save 0xLeif/00795075c39180ca4cdbe63c9d1655f4 to your computer and use it in GitHub Desktop.
One Line Switch
func switched<T: Hashable, O>(_ value: T,
cases: [T: O?],
default defaultCase: O? = nil) -> O? {
guard let switchCase = cases[value] else {
return defaultCase
}
return switchCase
}
func switched<T: Hashable, O>(_ value: T,
cases: [T: () -> O?],
default defaultCase: () -> O? = { nil }) -> O? {
guard let switchCase = cases[value] else {
return defaultCase()
}
return switchCase()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment