Это работает:
// 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: Синтезирование Equatable
и Hashable
соответствия
Пользователи должны включить автоматический синтез, объявив свой тип как Equatable
или Hashable
без выполнения каких-либо своих требований.Это соответствие должно быть частью первоначального объявления типа или расширения в том же файле (чтобы обеспечить доступ к закрытым и частным элементам из расширения).
Itговорит, что это было реализовано в 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)
Я что-то упустил?