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

Tra*_*ggs 3 generics prefix-operator swift

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

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

postfix operator &* { }

postfix func &* (arg:Observable<T>) -> T {
    return arg.value
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器告诉我的-> Tuse of an undeclared type.通用版真的不能用作返回类型吗?这里还有别的东西吗?

Rob*_*ier 6

你只需要使函数通用:

postfix func &*<T>(arg:Observable<T>) -> T {...}
Run Code Online (Sandbox Code Playgroud)

正如你所写的那样,它T本身应该是一个类型,而不是一个类型参数.