字典错误:模糊引用成员'+'
我有一个快速3方法下面的代码:
let dict = ["A": 1, "B": 2, "C": 3] let sum = dict["A"]! + dict["B"]! + dict["C"]!
该代码不能编译,因为Ambiguous reference to member '+'
错误的Ambiguous reference to member '+'
。 但是,如果我尝试添加只有两个元素它编译和按预期工作。
let dict = ["A": 1, "B": 2, "C": 3] let sum = dict["A"]! + dict["B"]!
正常工作。
我错过了语言应该如何工作?
另一个解决方法:
let dict = ["A": 1, "B": 2, "C": 3] let sum = 0 + dict["A"]! + dict["B"]! + dict["C"]!
您可以通过用Int
包装dict["A"]
来解决错误。
这将把键“A”的值转换为一个Int,允许我们正确添加。
let dict = ["A": 1, "B": 2, "C": 3] let sum = Int(dict["A"]!) + Int(dict["B"]!) + Int(dict["C"]!)
此代码已成功编译:
let dict = ["A": 1, "B": 2, "C": 3] let one = dict["A"]! let two = dict["B"]! let three = dict["C"]! let sum = one + two + three
我猜,这个问题涉及到复杂的expression式。 在本文中,您可以阅读关于构build时间优化的更多信息。
正如其他人所评论的,这似乎是一个错误。 然而,看起来你不太可能遇到这种情况,因为强制打开这样的字典元素是非常不安全的。 这工作正常:
let dict = ["A": 1, "B": 2, "C": 3] if let a = dict["A"], let b = dict["B"], let c = dict["C"] { let sum = a + b + c }