尝试在枚举中采用StringLiteralConvertible时:
enum Component: StringLiteralConvertible {
case Static(String)
case AnyInt
typealias ExtendedGraphemeClusterLiteralType = String
typealias UnicodeScalarLiteralType = String
init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
}
init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
}
init(stringLiteral value: String) {
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Variable 'self' used before initialized
Run Code Online (Sandbox Code Playgroud)
在每个初始化器中.
根据NSHipster,遵循该协议的正确方法涉及覆盖一个类func,它接受一个字符串文字并返回所需类/结构的对象.像这样:
static func convertFromStringLiteral(value: String) -> CGPoint {
return NSPointFromString(value) // CGPointFromString on iOS
}
Run Code Online (Sandbox Code Playgroud)
在最近的一次Swift更新中有变化吗?是否可以采用StringLiteralConvertible作为枚举?