在下面的函数中,我希望将html标记的属性传递给它。这些属性可以是字符串(test("id", "123"))或函数(test("onclick", {_ -> window.alert("Hi!")})):
fun test(attr:String, value:dynamic):Unit {...}我试图将参数value声明为Any,这是Kotlin中的根类型。但是函数不是Any类型的。将类型声明为dynamic有效,但是
dynamic不是一种类型。它只是关闭了对参数的输入检查。dynamic只为kotlin-js工作(Javascript)。如何用Kotlin (Java)编写这个函数?函数类型与任何函数类型的关系如何?是否有既包括函数类型又包括Any的类型?
发布于 2017-10-11 18:34:25
您可以重载该函数:
fun test(attr: String, value: String) = test(attr, { value })
fun test(attr: String, createValue: () -> String): Unit {
// do stuff
}发布于 2017-10-11 19:29:46
你可以写:
fun test(attr: String, string: String? = null, lambda: (() -> Unit)? = null) {
if(string != null) { // do stuff with string }
if(lambda != null) { // do stuff with lambda }
// ...
}然后以下列方式调用该函数:
test("attr")
test("attr", "hello")
test("attr", lambda = { println("hello") })
test("attr") { println("hello") }
test("attr", "hello", { println("hello") })
test("attr", "hello") { println("hello") }https://stackoverflow.com/questions/46695106
复制相似问题