我試圖讓與RawRepresentable可選參數的通用failable初始化,RawRepresentable初始化基本上這https://www.natashatherobot.com/swift-failable-enums-with-optionals/斯威夫特。可選RawValue
有一對夫婦的方法建議,其中之一就是這個(編輯:第二個條款中的固定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
我不知道,如果它曾經工作斯威夫特2,但我不能編譯它斯威夫特3.我得到:
Command failed due to signal: Segmentation fault: 11
有沒有辦法讓它工作?
P.S.我知道文章及其評論的其他方法。
編輯:修復破碎的複製/粘貼的代碼。
編譯器不應該崩潰,所以這顯然是一個錯誤。但它似乎在Swift 3.1中得到了修復(可用於Xcode 8.3 beta)。 – Hamish
[文件錯誤](http://bugs.swift.org)關於崩潰,當然 - 沒有代碼,但是可能會損壞,應該會導致編譯器崩潰。 – rickster