我的课:
class Demo {
init {
// define method here my some array:[a,b,c]
// such as fun Demo.a,Demo.b...
}
}
Run Code Online (Sandbox Code Playgroud)
函数名称是动态的。
Kotlin 可以做到这一点吗?
不,你不能在类中动态定义函数,但因为函数也是对象,所以你可以动态存储它们(在字段、数组、映射中)并动态调用它们。使用 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"])
}
Run Code Online (Sandbox Code Playgroud)
输出:
你好基里尔
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |