加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

模式匹配 – 由于Swift的模式匹配中的顺序而导致的意外结果

发布时间:2020-12-14 04:59:22 所属栏目:百科 来源:网络整理
导读:对不起,“这不应该工作吗?”题.但我无法想出一个更好的方式来表达这一点. enum MyEnum { case A,B,C}let tuple = (MyEnum.C,MyEnum.A) var x: Stringswitch tuple {case (.A,_): x = "(A,something)"case (_,.A): x = "(something,A)"case (_,.B): x = "(so
对不起,“这不应该工作吗?”题.但我无法想出一个更好的方式来表达这一点.

enum MyEnum {
    case A,B,C
}

let tuple = (MyEnum.C,MyEnum.A)    
var x: String

switch tuple {
case (.A,_):
    x = "(A,something)"
case (_,.A):
    x = "(something,A)"
case (_,.B):
    x = "(something,B)"
case (.C,.C):
    x = "(C,C)"
default:
    x = "default"
}

x // -> "default"

x计算为“default”,表示采用了默认分支.

但是,我期待“(某事,A)”和第二个案例陈述相匹配.根据我的理解(_,.A)应该匹配第一个元组元素中的任何内容,而第二个元素中的.A匹配.

如果我将(_,.A)案例移到顶部,它会按照我的预期进行匹配.其他元组也匹配我期望的位置.

我错过了什么?为什么这不符合第二种情况?

解决方法

此行为已在beta 3中得到纠正.它现在显示(Something,A)无论顺序如何.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读