所以我试着在 map 上注册一些函数,代码可以像这样恢复:
private val things = mutableMapOf<String, Any>()
fun put(name: String, value: Any) {
things[name] = value
}
fun main() {
put("foo") { a: String, b: (() -> String) ->
println(a + b())
}
}
但是Kotlin解析器抱怨我在第8行和第9行得到的c
类型:
Unresolved reference: a
Unexpected tokens (use ';' to separate expressions on the same line)
Unresolved reference: a
Unresolved reference: b
这看起来像是个虫子,但我不确定.
当然,这可以绕过我在register
到(String, () -> String) -> Unit
中指定value
的类型,但这是API,我无法访问它.
这也可以通过使用Function0<String>
来解决,但是为什么它不能使用更"Kotlin"的语法呢?