Я пытаюсь сделать общий failable инициализатору с дополнительным параметром для RawRepresentable, в основном это https://www.natashatherobot.com/swift-failable-enums-with-optionals/Swift. RawRepresentable INIT с дополнительным RawValue
Существовали несколько предложенных методов один из которых заключается в следующем (EDIT: фиксированный let
во втором пункте):
extension RawRepresentable {
init?(rawValue optionalRawValue: RawValue?) {
guard let rawValue = optionalRawValue, let value = Self(rawValue: rawValue) else { return nil }
self = value
}
}
здесь https://gist.github.com/okla/e5dd8fbb4e604dabcdc3
Я понятия не имею, если он когда-либо работал на Swift 2, но я не могу скомпилировать его Swift 3. Я получаю:
Command failed due to signal: Segmentation fault: 11
Есть ли способ заставить его работать?
P.S. Я знаю о других подходах к статье и ее комментариях.
РЕДАКТИРОВАТЬ: Исправлена неработающая копия/вставленный код.
Компилятор никогда не должен терпеть крах, так что это явно ошибка. Однако он, как представляется, исправлен в Swift 3.1 (доступен с бета-версией Xcode 8.3). – Hamish
[File bug] (http://bugs.swift.org) о сбое, конечно же - никакой код, каким бы сломанным он ни был, должен скомпрометировать компилятор. – rickster