swift – 使用“如果让…”与许多表达式

swift – 使用“如果让…”与许多表达式,第1张

概述这个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")}
总结

以上是内存溢出为你收集整理的swift – 使用“如果让…”与许多表达式全部内容,希望文章能够帮你解决swift – 使用“如果让…”与许多表达式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054910.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存