【发布时间】:2020-01-17 12:44:27
【问题描述】:
给定一个创建 lambdas 的函数。是否可以将声明函数的实现委托给返回的 lambda(类似于 by-delegated 属性)。如果函数存在by,它可能看起来像这样:
fun printFunCreator(message: String): () -> Unit = { println(message) }
fun printHelloWorld() by printFunCreator("Hello world")
我不想要的东西:
我确实不想创建一个额外的 lambda 属性来委托调用,如下所示:
fun printFunCreator(message: String): () -> Unit = { println(message) }
val printFun = printFunCreator("Hello world")
fun printHelloWorld() = printFun.invoke()
我确实不想像这样为每个执行创建一个新的 lambda 实例:
fun printFunCreator(message: String): () -> Unit = { println(message) }
fun printHelloWorld() = printFunCreator("Hello world").invoke()
【问题讨论】:
-
在 kotlin delegation, delegated-properties 中没有像
fun funName() by ...这样的函数委托
标签: function kotlin lambda reflection delegates