当我定义枚举时:
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的更好设计
- 按照以下对话使用
@_disfavoredOverload
可能是的次要后果
隐式成员表达式现在支持成员访问链。(57295228(
您可能会因为现有代码损坏而提交错误,但它有一种边缘情况的感觉,所以它可能永远不应该工作。无论如何,我敢打赌Test.zero
加速了编译。正如你的论坛链接所示,这种类型的检查很复杂。