Arb*_*tur 3 dictionary casting swift
我有一个[String:AnyObject]包含一些键和值的字典.
我想增加一个值为Double类型的键.
我可以这样做:
let nr = dict["number"] as! Double
dict["number"] = nr + 10
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这样,所以我想知道是否有另一种方式
我试过这个:
(dict["number"] as! Double) += 10
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
二进制运算符'+ ='不能应用于'(Double)'和'Double'类型的操作数
为什么这不起作用?
nan*_*nta 13
以下是一个替代方案。如果您想避免强制解包可选:
dict["number"] = (dict["number"] ?? 0) + 10
Run Code Online (Sandbox Code Playgroud)
你很亲密,实际上你可以用字母写字典+=,问题就是你的演员.例如,我们可以这样做:
var dict = ["number" : 2]
dict["number"]! += 10
Run Code Online (Sandbox Code Playgroud)
现在dict["number"]回来了12.现在这是创建一个新值(12)并将其替换为字典,它只是一种干净的方式来查看它.
你的代码的问题是左边(dict["number"] as! Double)给你一个Double.所以你说(12),然后右边Double也是(10).所以你的代码最终看起来像(12) += 10你可以清楚地看到有问题,因为这相当于12 = 12 + 10,yikes!
所以说,如果你正在使用原生的Swift词典,你可以使用我的第一个解决方案,否则你上面解决的解决方案也可以工作,只需要更长一点.
最后,如果您真的在寻找适合您的确切情况的单线程,您应该可以执行以下操作:
dict["number"] = (dict["number"] as! Double) + 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2251 次 |
| 最近记录: |