swift – 使用“如果让…”与许多表达式
发布时间:2020-12-14 05:56:51 所属栏目:百科 来源:网络整理
导读:这个Swift的成语很有意义 if let x = someDict[someKey] { ... } 但是,我真正想要的是 if let x = someDict[someKey],y = someDict[someOtherKey] { ... } 写的这样做并不正确,但这个想法是可能的吗? Swift 1.2更新 从Swift 1.2开始,如果允许允许展开多
这个Swift的成语很有意义
if let x = someDict[someKey] { ... } 但是,我真正想要的是 if let x = someDict[someKey],y = someDict[someOtherKey] { ... } 写的这样做并不正确,但这个想法是可能的吗?
Swift 1.2更新
从Swift 1.2开始,如果允许允许展开多个可选项,那么现在可以写下这个,如下例所示: if let x = someDict[someKey],y = someDict[someOtherKey] { … } 您甚至可以交换条件,如: if let x = someDict[someKey] where x == "value",y = someDict[someOtherKey] { … } 以前在Swift 1.2之前有效 没有一个丑陋的力量包装,你可以这样做: switch (dict["a"],dict["b"]) { case let (.Some(a),.Some(b)): println("match") default: println("no match") } 实际上仍然很冗长 这是因为可选类型的表单类型?实际上是可选的< Type>的缩写,这是一个大致如下的枚举: enum Optional<T> { case None case Some(T) } 然后,您可以使用模式匹配作为任何其他枚举。 编辑:我看到人们写这样的帮助函数(抱歉因为缺乏归因,我不记得我在哪里看到了) func unwrap<A,B>(a: A?,b: B?) -> (A,B)? { switch (a,b) { case let (.Some(a),.Some(b)): return (a,b) default: return nil } } 那么你可以继续使用if let构造,就是这样: if let (a,b) = unwrap(dict["a"],dict["b"]) { println("match: (a),(b)") } else { println("no match") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |