是否有可能将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) }