【问题标题】:'Equatable' cannot be automatically synthesized in an extension'Equatable' 不能在扩展中自动合成
【发布时间】:2018-06-06 21:35:22
【问题描述】:

这行得通:

// Conformance to protocol correctly synthesized by compiler 
struct MyStruct: Equatable { 
}

这不是:

struct MyStruct { 
}
// Doesn't work, even though the extension is in the same file
extension MyStruct: Equatable {
}

错误很明显:

'Equatable' 的实现不能在扩展中自动合成

我担心的是,根据 Swift 的提议SE-0185,这应该是允许的:

SE-0185:综合 EquatableHashable 一致性

用户必须通过将其类型声明为EquatableHashable 来选择加入自动综合,而无需实现他们的任何要求。这种一致性必须是原始类型声明的一部分或在同一文件的扩展中(以确保可以从扩展访问私有和文件私有成员)。

它说这是在 Swift 4.1 (apple/swift#9619) 中实现的。

但是,在尝试编译时,我收到了之前显示的错误。我使用的是 Ubuntu 16.04,我有这两个版本的 swift 失败:

  • Swift version 4.1-dev (LLVM 260a172ffb, Clang cd84be6c42, Swift 05b1b2be7c)
  • Swift version 4.2-dev (LLVM d30879863e, Clang 041fd44ebe, Swift b08fb12358)

我错过了什么吗?

【问题讨论】:

  • 在我看来是个错误。
  • 可能是this issue
  • ...这是关于2 weeks ago的实现。
  • 这是 swift 中的一个错误并记录在 here.

标签: swift swift4 protocol-extension


【解决方案1】:

好消息

最新的开发。 2018 年 6 月 5 日的快照按预期工作:


坏消息

最新的-release- 版本4.1.2 不工作。

【讨论】:

  • 现在找不到中继链接
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多