我的课程:
class Demo {
init {
// define method here my some array:[a,b,c]
// such as fun Demo.a,Demo.b...
}
}
函数名称是动态的。
Kotlin可以这样做吗?
答案 0 :(得分:2)
不,您不能在类中动态定义函数,但由于函数也是对象,您可以动态存储它们(在字段,数组,映射中)并动态调用它们。使用Kotlin的一些语言功能,我们可以得到一个非常简洁的语法:
class Demo(name: String) {
private val functions: Map<String, () -> Any> = mapOf(name to { "Hello $name" })
operator fun get(name: String): Any? = functions[name]?.invoke()
}
fun main(args: Array<String>) {
val demo = Demo("Kirill")
println(demo["Kirill"])
}
输出:
Hello Kirill
答案 1 :(得分:0)
不,Kotlin是一种静态类型的语言。这意味着必须在编译时知道每个变量和方法的类型。