1

当我定义枚举时:

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按照以下对话使用。
4

1 回答 1

1

可能是次要后果

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

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

于 2021-05-11T23:16:49.013 回答