gpt4 book ai didi

swift - 为什么具有相同名称但外部参数名称不同的多个函数会产生编译错误?

转载 作者:行者123 更新时间:2023-11-28 16:00:08 24 4
gpt4 key购买 nike

这两个add方法没有重载(名称相同但外部参数名称不同):

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 错误吗?

最佳答案

在我看来这像是一个编译器错误。重新排列代码解决了问题:

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)

我鼓励您提交 bug report与 Apple。

关于swift - 为什么具有相同名称但外部参数名称不同的多个函数会产生编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com