是否有可能将kotlin中的高阶函数映射到字符串

我必须做一个异步请求,然后通知相关的听众的结果。

fun connectToTopic(topic:String, body:(topic:String, data : ByteArray ) -> Void){ topicCallbackMap.put(topic, body) // is this possible??? } 

我想创建一个从“主题”到高阶函数的映射,以便我可以为特定的主题调用特定的高阶函数,像这样

 private val topicCallbackMap: Map<String, body:(topic:String, data : ByteArray ) -> Void> 

以上是一个错误的代码,只是想给精髓。

我想要的可以通过使用接口侦听器轻松实现,但是我想知道在Kotlin中这是否可行。 谢谢。

有可能的。 你的代码只有一些语法错误。 并且请注意,您需要一个MutableMap来将值放入地图中。

 private val topicCallbackMap = mutableMapOf<String, (String, ByteArray) -> Unit>() fun connectToTopic(topic:String, body: (String, ByteArray) -> Unit) { topicCallbackMap.put(topic, body) //OR topicCallbackMap[topic] = body } 

是的,这是可能的:

 val functionMap: Map<String, (Int) -> Int> = mapOf("a2" to { a: Int -> a * 2 }, "a3" to {a: Int -> a * 3} ) fun execute(a: Int, myBlock: (Int) -> Int) { println( myBlock(a) ) } 

比你可以得到的功能,并将其用作另一个函数的参数:

 val fun1 = functionMap["a2"] if (fun1 != null) { execute(3, fun1) }