添加字典swift 3中包含的双精度数

Jam*_*ate 9 double dictionary swift swift3

我正在学习一些关于斯威夫特的知识,并且正在学习Udemy课程.该课程以swift 2讲授,我使用swift 3,所以我希望了解输出的差异,到目前为止我在网上找不到任何答案.
我有一个包含3件事的字典项目.

var menu = ["entre" : 5.55, "main-meal": 20.50, "desert": 5.50]
Run Code Online (Sandbox Code Playgroud)

想法是使用教师输出(在swift 2中正常工作)将3个值加在一起:

var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]!
Run Code Online (Sandbox Code Playgroud)

在这个过程中,这个工作正常,但对我来说,它会抛出一个错误,上面写着"不能下标一个类型的值'inout [String:Double]'(又名'inout Dictionary')"

我觉得非常奇怪的是,如果我只使用2个值,一切都很好,问题是第三个添加时.我可以通过在结尾添加+ 0.0来解决这个问题,如下所示:

var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]! + 0.0
Run Code Online (Sandbox Code Playgroud)

我希望了解的是两个版本之间的区别是什么,理想情况是我在没有我的解决方法的情况下将3加在一起是错误的.

提前致谢.

Ale*_*ica 2

解决方法

为了几把钥匙

let (entreCost, desertCost, mainCost) = (menu["entre"]!, menu["desert"]!, menu["main-meal"]!)

let totalCost = entreCost + desertCost + mainCost
Run Code Online (Sandbox Code Playgroud)

对于很多钥匙

let keysToSum = ["entre", "desert", "main-meal"]
keysToSum.map{ menu[$0]!}.reduce(0, +)
Run Code Online (Sandbox Code Playgroud)

对于所有按键

menu.values.reduce(0, +)
Run Code Online (Sandbox Code Playgroud)