模式匹配 – 由于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)无论顺序如何.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |