swift – 有没有办法在switch语句中将变量绑定到多个备选方案?

swift – 有没有办法在switch语句中将变量绑定到多个备选方案?,第1张

概述假设我有一个枚举定义如下: enum Response { case Result(String, Int) case Error(String)} 然后,我得到这样的回应: let resp: Response = // ... 假设我想编写一个switch语句并以与Result和Error案例相同的方式处理,并将同名的变量绑定到它们包含的String.我怎样才能做到这一点?从 假设我有一个枚举定义如下:
enum Response {    case Result(String,Int)    case Error(String)}

然后,我得到这样的回应:

let resp: Response = // ...

假设我想编写一个switch语句并以与Result和Error案例相同的方式处理,并将同名的变量绑定到它们包含的String.我怎样才能做到这一点?从概念上讲,类似于此:

switch resp {    case let .Result(str,_),let .Error(str):        println("Found: \(str)")}

str绑定两次,_表示我对Result携带的Int值不感兴趣.

到目前为止,我能找到的最接近的事情是声明一个这样的内联函数,然后调用它:

func processRespString(str: String) {    println("Found \(str)")}switch resp {    case let .Result(str,_): processRespString(str)    case let .Error(str): processRespString(str)}

有没有更好的办法?

已被接受的 Swift evolution Proposal SE-0043使用Swift 3解决了这个问题.
enum Response {    case result(String,Int)    case error(String)}let resp = Response.error("Some text")switch resp {case let .result(str,let .error(str):    print("Found: \(str)") // prints Found: Some text}

使用Swift 2,之前的Playground代码会生成错误:具有多个模式的case标签无法声明变量.但是,使用Swift 3,它不会产生任何错误并具有预期的行为.

总结

以上是内存溢出为你收集整理的swift – 有没有办法在switch语句中将变量绑定到多个备选方案?全部内容,希望文章能够帮你解决swift – 有没有办法在switch语句中将变量绑定到多个备选方案?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1051877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存