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加在一起是错误的.
提前致谢.
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)
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |