午后问答:Swift 中的 guard case = 语法
布莱恩·卢比的提问:“在 Swift 2 中你如何看待 enum Test {case a(Int),b(String)} let x = Test.a(2) let y = Test.b("Hello") guard case Test.a(let value) = x else { fatalError("shouldn't fire") } guard case Test.b(let value) = x else { fatalError("will fire") } 答案是否定的,布莱恩所谈论的是 let foo = "abcdef".characters let bar = "abcdefghij".characters guard case foo.indices = foo.startIndex else {fatalError("won't fail")} guard case foo.indices = bar.endIndex.predecessor() else {fatalError("fails")} 在模式匹配中使用 guard indices ~= index else { return nil } 我针对
不管你同意与否,都欢迎通过留言、推特、电子邮件的形式与我联系。并且谢谢布莱恩,我喜欢研究这样的问题。 Zachary Waldowski 在上说:“if/guard/for/while case 是内建的模式,而 ~= 本质上是一种实现细节 :/”。也许是这样,但我不认为这样就能写出漂亮的代码,或让代码变得更容易阅读。他最后回复到:“老实说,我无法明确给你一个答案;我觉得
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |