这两个添加方法不重载(名称相同但外部参数名称不同):
func add (x:Int, y:Int) -> Int {
return x+y
}
add(x: 1,y: 2)
add(x: 4,y: 2)
func add (_ x:Int, _ y:Int) -> Int {
return x+y
}
add(4,5) // Delete this, and the error goes away
func add (addend1 x:Double, addend2 y:Double) -> Double {
return x + y
}
add(addend1: 1.1, addend2: 2.2) // But the error is flagged here
add(addend1: 3.3, addend2: 4.4) // and here
Xcode 8.2 Beta(8C30a)Playground标记最后两行:
表达类型' Int'在没有更多背景的情况下是模棱两可的
这不应该含糊不清(我认为),因为外部参数名称都是不同的。更奇怪的是,这被标记为Swift编译错误,但它们在表达式区域中评估为3.3和7.7。所以它正在编译,但是......没有编译?
这是一个Xcode错误吗?
答案 0 :(得分:1)
它看起来像编译器错误。重新排列代码修复了问题:
func add (x:Int, y:Int) -> Int {
return x+y
}
func add (_ x:Int, _ y:Int) -> Int {
return x+y
}
func add (addend1 x:Double, addend2 y:Double) -> Double {
return x + y
}
add(x: 1,y: 2)
add(x: 4,y: 2)
add(4,5)
add(addend1: 1.1, addend2: 2.2)
add(addend1: 3.3, addend2: 4.4)
我鼓励您向Apple提交bug report。