字典中的递增数字
Increment number in Dictionary
我有一个字典 [String:AnyObject]
,其中包含一些键和值。
我想增加一个值是 Double 类型的键。
我可以这样做:
let nr = dict["number"] as! Double
dict["number"] = nr + 10
但我不喜欢那样,所以我想知道是否有其他方法
我试过这个:
(dict["number"] as! Double) += 10
但这给了我一个错误:
Binary operator '+=' cannot be applied to operands of type '(Double)' and 'Double'
为什么这不起作用?
你很接近,事实上你可以使用 +=
写入字典,问题是你的转换。例如我们可以这样做:
var dict = ["number" : 2]
dict["number"]! += 10
现在 dict["number"]
returns 12
。现在这是创建一个新值 (12) 并将其替换到字典中,这只是一种简洁的查看方式。
您的代码的问题在于左侧 (dict["number"] as! Double)
给您一个 Double
。所以你说 (12)
,那么右边也是 Double
(10
)。所以你的代码最终看起来像 (12) += 10
,你可以清楚地看到它有问题,因为这等同于 12 = 12 + 10
,哎呀!
话虽如此,如果您使用的是本机 Swift 词典,则可以使用我的第一个解决方案,否则您上面解决的解决方案也适用,只是时间更长。
最后,如果您真的正在寻找一款适合您具体情况的衬垫,您应该可以这样做:
dict["number"] = (dict["number"] as! Double) + 10
以下是备选方案。如果你想避免强制展开一个可选的:
dict["number"] = (dict["number"] ?? 0) + 10
安全的投射方式是:
if let num = dict["number"] as? Double {
dict["number"] = num + 10
}
我有一个字典 [String:AnyObject]
,其中包含一些键和值。
我想增加一个值是 Double 类型的键。
我可以这样做:
let nr = dict["number"] as! Double
dict["number"] = nr + 10
但我不喜欢那样,所以我想知道是否有其他方法
我试过这个:
(dict["number"] as! Double) += 10
但这给了我一个错误:
Binary operator '+=' cannot be applied to operands of type '(Double)' and 'Double'
为什么这不起作用?
你很接近,事实上你可以使用 +=
写入字典,问题是你的转换。例如我们可以这样做:
var dict = ["number" : 2]
dict["number"]! += 10
现在 dict["number"]
returns 12
。现在这是创建一个新值 (12) 并将其替换到字典中,这只是一种简洁的查看方式。
您的代码的问题在于左侧 (dict["number"] as! Double)
给您一个 Double
。所以你说 (12)
,那么右边也是 Double
(10
)。所以你的代码最终看起来像 (12) += 10
,你可以清楚地看到它有问题,因为这等同于 12 = 12 + 10
,哎呀!
话虽如此,如果您使用的是本机 Swift 词典,则可以使用我的第一个解决方案,否则您上面解决的解决方案也适用,只是时间更长。
最后,如果您真的正在寻找一款适合您具体情况的衬垫,您应该可以这样做:
dict["number"] = (dict["number"] as! Double) + 10
以下是备选方案。如果你想避免强制展开一个可选的:
dict["number"] = (dict["number"] ?? 0) + 10
安全的投射方式是:
if let num = dict["number"] as? Double {
dict["number"] = num + 10
}