为什么一元加/减不能从赋值中推断出泛型类型?
使用invoke
,例如:inline operator fun <reified T> invoke(): T
您可以调用该方法并且可以使用它...例如val foo: Long = this()
但是,以同样的方式使用unaryPlus
或unaryMinus
并不起作用。
方法签名:inline operator fun <reified T> unaryPlus(): T
非工作电话:val foo: Long = +this
答案 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)
}