我想定义一个函数f()
如下(仅作为示例):
val f: (vararg strings: String) -> Unit = { for (str in it) println(str) }
这样我就可以使用f("a","b","c")
调用它。对于f()
的上述定义,我得到编译错误,指向vararg
修饰符(Kotlin v。1.3.60):Unsupported [modifier on parameter in function type]
如何定义接受vararg
参数的lambda? 最佳答案
恐怕这是不可能的。下面通过vararg
演示函数的类型。 vararg
参数由Array
表示:
fun withVarargs(vararg x: String) = Unit
val f: KFunction1<Array<out String>, Unit> = ::withVarargs
docs中也建议此行为:
因此,您必须在示例中使用
Array<String>
。您可以使用允许使用vararg
并根据需要进行调用的普通函数,而不是将其编写为lambda函数:fun f(vararg strings: String) = strings.forEach(::println)
f("a","b","c")
关于lambda - Kotlin Lambda中的vararg参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48045884/