当前位置 : 主页 > 手机开发 > 其它 >

模式匹配作为swift中的函数表达式

来源:互联网 收集:自由互联 发布时间:2021-06-11
Swift是一个非常实用的语言,函数式语言都是关于表达式而不是语句,这就是开关模式匹配让我感到困惑的原因. 所有的例子都是这样的: switch x {case 0: print("positive")case 0: print("negative")ca
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"
    }
}()
网友评论