在Kotlin中,为什么在函数被分配给一个变量之后,默认参数没有被传递?

我用默认参数创建了一个函数,然后将函数保存到一个变量。

但是,当我通过变量调用函数,默认参数不传递。

fun main(args : Array<String>) { printNum() val fn = ::printNum fn(0) fn() // error: no value passed for parameter 'i' } fun printNum(i: Int = 10) = println(i) 

那是因为你正在使用方法引用。 你的fn类型是KFunction<Int, Unit> 。 当你调用fn() ,这被编译为fn.invoke() ,这里需要一个整数作为参数。