在Python中,我可以创建功能关键字的字典并调用其键,而无需运行该字典中的其他功能。有相当于Kotlin的东西吗?
我创建了一个mutableMapOf(1到a(),2到b()),该函数可以部分工作,但是即使未调用其键,这两个函数也会每次运行。在Python中,我可以说:
def a(): print("Hi")
def b(): print("Bye")
function_dictionary = {1: a, 2: b}
function_dictionary[1]() //runs a()
在科特林,我只能想到:
fun a(){println("Hi")}
fun b(){println("Bye")}
val functionMap = mutableMapOf<Int, Unit>(1 to a(), 2 to b()) //a() and b() both run
functionMap[1] //runs a() again
在Kotlin示例中,无论是否选择了分配给它们的地图键,这些功能都会运行。我可以制作出与字典中的字典相同的地图吗?
答案 0 :(得分:5)
现在,您正在创建地图时调用a
和b
。您可以将引用传递给函数,而不是调用它们。但是您必须稍后明确调用它:
val functionMap = mutableMapOf(1 to ::a, 2 to ::b)
functionMap[1]!!() // prints Hi
此外,您还可以将每个函数包装在一个lambda中:
val functionMap = mutableMapOf(1 to { a() }, 2 to { b() })
functionMap[1]!!() // prints Hi