为什么不能使用 T 作为前缀运算符的返回类型?



在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应该是类型本身,而不是类型参数。

最新更新