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

时间:2015-12-16 19:27:40

标签: swift generics prefix-operator

在Observable模式通过的背景下,简单地探索Swift。我想要探索的是为了语法糖而实现前缀运算符。

class Observable<T> {
    var value:T
    init(_ v:T) {
        value = v
    }
}

postfix operator &* { }

postfix func &* (arg:Observable<T>) -> T {
    return arg.value
}

然而,编译器通知我-> Tuse of an undeclared type。通用版真的不能用作返回类型吗?还有其他事情在这里发生吗?

1 个答案:

答案 0 :(得分:6)

你只需要使函数通用:

postfix func &*<T>(arg:Observable<T>) -> T {...}

正如你所写,T本身应该是一个类型,而不是类型参数。