Kotlin:为什么一元加/减无法从赋值中推断出泛型类型?

时间:2016-04-24 03:07:54

标签: generics kotlin

为什么一元加/减不能从赋值中推断出泛型类型?

使用invoke,例如:inline operator fun <reified T> invoke(): T

您可以调用该方法并且可以使用它...例如val foo: Long = this()

但是,以同样的方式使用unaryPlusunaryMinus并不起作用。

方法签名:inline operator fun <reified T> unaryPlus(): T

非工作电话:val foo: Long = +this

enter image description here

1 个答案:

答案 0 :(得分:3)

必须将运算符声明为扩展函数或某些类的成员:

inline operator fun <reified T> T.unaryPlus(): T = this

然后您可以在任何 T

上使用它
fun main(args: Array<String>) {
    data class Type(val value: Int)
    val foo = +Type(42)
}