我正在尝试使Swift泛型类型符合扩展中的协议 . 这是类型:
enum Maybe<T>{
case Nothing
case Something(T)
init(){
self = .Nothing
}
init(_ something: T){
self = .Something(something)
}
}
我希望它符合的协议是 NilLiteralConvertible
如果我尝试扩展,我会遇到一堆疯狂的错误:
extension Maybe<T>: NilLiteralConvertible{
}
如果我在 Maybe<T>
的主要定义中声明,我只能实现它 . 有没有搞错???
enum Maybe<T>: NilLiteralConvertible{
case Nothing
case Something(T)
init(){
self = .Nothing
}
init(_ something: T){
self = .Something(something)
}
// NilLiteralConvertible
static func convertFromNilLiteral() -> Maybe<T> {
return Maybe<T>()
}
}
1 回答
使用泛型的类/ struct / enum扩展的正确语法是:
所以你不必指定泛型类型
T
,它就像你定义一个新的泛型类型一样_1502594