为什么我不能将 T 用作前缀运算符的 return 类型?
Why can't I use T as a return type for my prefix operator?
简单地探索 Swift,在 Observable 模式通过仪式的上下文中。我想探索的是为了语法糖而实现前缀运算符。
class Observable<T> {
var value:T
init(_ v:T) {
value = v
}
}
postfix operator &* { }
postfix func &* (arg:Observable<T>) -> T {
return arg.value
}
但是,编译器告诉我 -> T
是 use of an undeclared type
。泛型真的不能作为return类型吗?这里还有其他事情吗?
您只需要使函数通用:
postfix func &*<T>(arg:Observable<T>) -> T {...}
如您所写,T
应该是类型本身,而不是类型参数。
简单地探索 Swift,在 Observable 模式通过仪式的上下文中。我想探索的是为了语法糖而实现前缀运算符。
class Observable<T> {
var value:T
init(_ v:T) {
value = v
}
}
postfix operator &* { }
postfix func &* (arg:Observable<T>) -> T {
return arg.value
}
但是,编译器告诉我 -> T
是 use of an undeclared type
。泛型真的不能作为return类型吗?这里还有其他事情吗?
您只需要使函数通用:
postfix func &*<T>(arg:Observable<T>) -> T {...}
如您所写,T
应该是类型本身,而不是类型参数。