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")}总结
以上是内存溢出为你收集整理的swift – 使用“如果让…”与许多表达式全部内容,希望文章能够帮你解决swift – 使用“如果让…”与许多表达式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)