为何infix不支持类型自动推导


#1
class DATA<T>

public  fun <T> add1(t1:T,t2:T): List<T> =  listOf(t1, t2)
public  infix fun <T> T.add2(t2:T): List<T> =  listOf(this, t2)

fun printData(list: List<DATA<String>>) {
    println("Hello World!")
}

fun main(args: Array<String>) {
    printData( add1(DATA(), DATA()) )
    printData( DATA() add2 DATA())    //为何此行编译通不过?
}

把函数add1改成中缀格式的add2后无法编译,这是Kotlin的Bug吗?


#2


我试了可以?


#3

你这个可以运行的原因是参数1和2 是整数,我遇到问题的原因是所用的参数类型是DATA, 调用add1 可以省略泛型参数写成DATA,而调用add2不支持省略泛型参数。


#4

是因为你new DATA的时候没有设置泛型


京ICP备16022265号-2 Kotlin China 2017 - 2018