是否可以像使用其他+
这样的运算符一样,在其他类上实现散布运算符,例如:
class Demo{
operator fun plus(i:Int):Demo {
...
}
}
答案 0 :(得分:1)
不,你不能。扩展运算符没有任何函数匹配,因此不能在Kotlin中重载。
查看编译器创建的字节码时,可以看到vararg
已编译为数组。传播运算符仅创建该数组的副本。
例如:
fun test(vararg strings: String) {
}
fun main() {
val params = arrayOf("1", "2")
test(*params)
}
编译为:
INVOKESTATIC java/util/Arrays.copyOf ([Ljava/lang/Object;I)[Ljava/lang/Object;
CHECKCAST [Ljava/lang/String;
INVOKESTATIC CoroutineTestKt.test ([Ljava/lang/String;)V