函数重载歧义使用 - Xcode 12.5
Posted
技术标签:
【中文标题】函数重载歧义使用 - Xcode 12.5【英文标题】:Function overloading ambiguous use - Xcode 12.5 【发布时间】:2021-05-11 14:33:40 【问题描述】:当我定义枚举时:
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
。
【问题讨论】:
谢谢@hoseinalialborzi,但您发布的问题似乎与返回类型有关。我的问题是关于发行说明的。 【参考方案1】:可能是
的次要结果隐式成员表达式现在支持成员访问链。 (57295228)
您可能会因为现有代码损坏而提交错误,但它有一种边缘情况的感觉,所以也许它永远不应该工作。无论如何,我敢打赌Test.zero
会加快编译速度。正如您的论坛链接所示,这种类型检查很复杂。
【讨论】:
此外,类型检查器也在不断发展,不需要在发行说明中添加特定条目。以上是关于函数重载歧义使用 - Xcode 12.5的主要内容,如果未能解决你的问题,请参考以下文章
Armadillo / Xcode:“仅返回类型不同的函数不能被重载”错误无处不在