Luk*_*Feo 4 expression functional-programming pattern-matching switch-statement swift
Swift是一个非常实用的语言,函数式语言都是关于表达式而不是语句,这就是开关模式匹配让我感到困惑的原因.
所有的例子都是这样的:
switch x {
case > 0:
print("positive")
case < 0:
print("negative")
case 0:
print("zero")
}
Run Code Online (Sandbox Code Playgroud)
但我想做这样的事情:
let result = switch x {
case > 0:
"positive"
case < 0:
"negative"
case 0:
"zero"
}
Run Code Online (Sandbox Code Playgroud)
目前我能看到的唯一方法是:
var result: String?
switch x {
case > 0:
result = "positive"
case < 0:
result = "negative"
case 0:
result = "zero"
}
if let s = result {
//...
}
Run Code Online (Sandbox Code Playgroud)
这显然不像基于'表达式'的switch语句那样优雅.是否有任何工作或替代方案或苹果需要做些什么来增强语言?
Switch语句不能直接用作Swift中的表达式.但是,有一种解决方法可以做你想要的.可以在闭包中写入switch语句,如下所示:
let result : String = {
switch x {
case _ where x > 0:
return "positive"
case _ where x < 0:
return "negative"
default:
return "zero"
}
}()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |