我试图让与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