Swift 是一种漂亮的函数式语言,而函数式语言都是关于表达式而不是语句,这就是为什么开关模式匹配让我感到困惑的原因。
所有的例子都是这样的:
switch x {
case > 0:
print("positive")
case < 0:
print("negative")
case 0:
print("zero")
}
但是我想做这样的事情:
let result = switch x {
case > 0:
"positive"
case < 0:
"negative"
case 0:
"zero"
}
目前我能看到的唯一方法是:
var result: String?
switch x {
case > 0:
result = "positive"
case < 0:
result = "negative"
case 0:
result = "zero"
}
if let s = result {
//...
}
这显然不如基于“表达式”的 switch 语句优雅。是否有任何解决方法或替代方案,或者这是苹果需要做的事情来增强语言?
最佳答案
Switch语句在Swift中不能直接作为表达式使用。但是,有一种解决方法可以做你想做的事。可以像这样在闭包中编写 switch 语句:
let result : String = {
switch x {
case _ where x > 0:
return "positive"
case _ where x < 0:
return "negative"
default:
return "zero"
}
}()
关于swift - 模式匹配作为 swift 中的函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240418/