函数重载使用不明确 - Xcode 12.5
Function overloading ambiguous use - Xcode 12.5
当我定义枚举时:
enum Test: CGFloat {
case zero
}
和两个类似于以下的函数:
func test(_ param: CGFloat) {
print("param - \(param)")
}
func test(_ param: Test) {
print("param - \(param.rawValue)")
}
我尝试使用它们时遇到的问题:
test(Test.zero) <- prints "param - 0"
test(.zero) <- error: ambiguous use of .zero
虽然我知道编译器与 .zero
的两个定义发生冲突,但我试图查明 Xcode 12.5 发行说明中的更改位置。也许有人可以指出我正确的方向?看起来它在 12.4 中工作。
注:
可以通过以下方式修复:
- 更好的设计 API;
- 根据以下 conversation 使用
@_disfavoredOverload
。
可能是
的次要后果
Implicit member expressions now support chains of member accesses. (57295228)
您可能会因为现有代码损坏而提交错误,但它有一种极端情况的感觉,所以它可能永远不会起作用。无论如何,我敢打赌说 Test.zero
会加快编译速度。正如您的论坛 link 所示,这种类型检查很复杂。
当我定义枚举时:
enum Test: CGFloat {
case zero
}
和两个类似于以下的函数:
func test(_ param: CGFloat) {
print("param - \(param)")
}
func test(_ param: Test) {
print("param - \(param.rawValue)")
}
我尝试使用它们时遇到的问题:
test(Test.zero) <- prints "param - 0"
test(.zero) <- error: ambiguous use of .zero
虽然我知道编译器与 .zero
的两个定义发生冲突,但我试图查明 Xcode 12.5 发行说明中的更改位置。也许有人可以指出我正确的方向?看起来它在 12.4 中工作。
注:
可以通过以下方式修复:
- 更好的设计 API;
- 根据以下 conversation 使用
@_disfavoredOverload
。
可能是
的次要后果Implicit member expressions now support chains of member accesses. (57295228)
您可能会因为现有代码损坏而提交错误,但它有一种极端情况的感觉,所以它可能永远不会起作用。无论如何,我敢打赌说 Test.zero
会加快编译速度。正如您的论坛 link 所示,这种类型检查很复杂。