在Observable模式成人礼的背景下简单探索Swift。我想探索的是实现前缀运算符,以获得语法上的优势。
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
。泛型真的不能用作返回类型吗?这里还有别的事吗?
您只需要使函数通用:
postfix func &*<T>(arg:Observable<T>) -> T {...}
正如您所写的,T
应该是类型本身,而不是类型参数。