我正在学习一些关于 Swift 的知识,并且正在学习 Udemy 类(class)。该类(class)是用 swift 2 教授的,我使用的是 swift 3,所以我希望了解输出的差异,但到目前为止我在网上找不到任何答案。
我有一个字典项目,其中包含 3 个东西。
var menu = ["entre" : 5.55, "main-meal": 20.50, "desert": 5.50]
想法是使用 instructors 输出将 3 个值相加(在 swift 2 中工作正常):
var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]!
在类(class)中,这工作得很好,但对我来说,它会抛出一个错误,内容为“无法为类型为‘inout [String : Double]’(又名‘inout Dictionary’)的值下标”
我觉得很奇怪的是,如果我只使用 2 个值,一切都很好,问题是当添加第三个值时。我可以通过在末尾添加 + 0.0 来解决这个问题,如下所示:
var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]! + 0.0
我希望了解这两个版本之间的区别是什么,理想情况下我在没有解决方法的情况下将 3 个版本加在一起时做错了什么。
提前致谢。
最佳答案
解决方法
几个键
let (entreCost, desertCost, mainCost) = (menu["entre"]!, menu["desert"]!, menu["main-meal"]!)
let totalCost = entreCost + desertCost + mainCost
对于很多键
let keysToSum = ["entre", "desert", "main-meal"]
keysToSum.map{ menu[$0]!}.reduce(0, +)
对于所有键
menu.values.reduce(0, +)
关于swift - 添加字典 swift 3 中包含的 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415064/