想实现一个类似 js 中的功能
require(["a", "b", "c"], function(a, b, c){
})
问,以个 lambda 怎样写成变参的?
想实现一个类似 js 中的功能
require(["a", "b", "c"], function(a, b, c){
})
问,以个 lambda 怎样写成变参的?
很遗憾无法实现,正如codegoose提供的StackOverflow的问答所述,kotlin的lambda暂没提供vararg修饰符的支持
想要实现你所需的函数定义,以下是我所知的两种较为接近的实现方式
// 使用匿名内部类,较麻烦我觉得你肯定不会用
interface Cry {
fun crying(vararg x : String)
}
private fun require(vararg config: String, cry: Cry) {
cry.crying(*config)
}
fun test1() {
val config = arrayOf("1", "2")
require(*config, cry = object : Cry {
override fun crying(vararg x: String) = x.forEach(::println)
})
}
// 使用arrayOf来手动实现可变参数的封装过程,相对来说还行,但要注意vararg参数数组的类型不是标准类型,在此处是Array<out String>
private fun require(vararg config: String, block : (Array<out String>) -> Unit) {
block(config)
block(arrayOf("1", "2", "3"))
}
fun test2() {
val config = arrayOf("1", "2")
require(*config, block = { it.forEach(::println)})
}
1 回答604 阅读✓ 已解决
2 回答603 阅读
497 阅读
没有办法写出来,参考https://stackoverflow.com/que...