泛型的inline函数可以带默认参数吗?


#1
fun main() {
    val foo = foo { 1 }
    foo()
}

inline fun <R> foo(fn: () -> R? = { 1 }): R? {
    return fn()
}

fn 的返回值是泛型,foo的返回值也是泛型,fn可以带默认参数吗?


#2

你是指这样吗?

fun main() {
    val foo = foo { 2 }
    println(foo)
}

inline fun <R> foo(fn: () -> R? = { 1 as? R }): R? {
    return fn()
}

#3

不。。。细想一下方法签名都不一致,看了一下官方库也没有这种写法,最后还是重载了


#4

fun main() {
val nn = foo<Int>()
val mm = foo({
Usertest(“zhangsan”, 5)
})
println(nn)
print(mm)
}

data class Usertest(val name : String , val age : Int)

inline fun <R> foo( fn : ()->R? = { 1 as R }): R? {
return fn()
}

我试了一下楼上的也行啊,怎么不行了?没啥问题啊
输出:
1
Usertest(name=zhangsan, age=5)


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