函数重载不明确使用-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的更好设计
  • 按照以下对话使用@_disfavoredOverload

可能是的次要后果

隐式成员表达式现在支持成员访问链。(57295228(

您可能会因为现有代码损坏而提交错误,但它有一种边缘情况的感觉,所以它可能永远不应该工作。无论如何,我敢打赌Test.zero加速了编译。正如你的论坛链接所示,这种类型的检查很复杂。

相关内容

  • 没有找到相关文章

最新更新