我正在学习一些关于Swift的知识,并且正在跟着一个Udemy课程学习。这个课程是用Swift 2教授的,而我正在使用Swift 3,所以希望能够理解输出差异,但我目前在网上找不到任何答案。
我有一个包含3个内容的字典项。
var menu = ["entre" : 5.55, "main-meal": 20.50, "desert": 5.50]
这个想法是使用教练的输出将3个值相加(在Swift 2中可以正常工作):
var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]!
在课程中这个可以正常工作,但对我来说会抛出一个错误,内容为:“无法下标化'inout[String: Double]'(又名'inout Dictionary')”
我发现很奇怪的是,如果我只使用2个值,一切都很好,问题是当第三个值添加时。我可以通过在末尾添加+ 0.0来解决问题,如下所示:
var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]! + 0.0
我希望了解的是这两个版本之间的区别,同时希望知道我在将它们三个相加时出了什么问题,而不需要使用我的解决方法。
提前感谢您。
[String: Double]
(无论是显式还是隐式)。你这样做只会导致加法表达式根本无法工作,但原因是其他的! - parvar totalCost: Double = menu["entre"]! + menu["main-meal"]! + menu["desert"]!
。它会抛出MyPlayground.playground:4:62: error: value of optional type 'Double?' not unwrapped; did you mean to use '!' or '?'?
的错误提示。 - Gary LO