了解kotlin执行者

我理解执行者的概念,但是我在理解kotlin的执行者方面有些麻烦。 也许这是语法没有帮助。

让我们看看下面的例子:

private class AlwaysCallback(private val executor: (() -> Unit) -> Unit, private val cb: Progress.() -> Unit) : Callback { override fun execute(progress: Progress) { executor { progress.cb() } } } 

如果我理解正确,执行者( () -> Unit ) -> Unit是一个关闭的容器。 要执行的代码块。 我不确定这是真的,还是只是一个匿名功能的船只。

另一件事是,有人可以解释语法: ( () -> Unit ) -> Unit

我已经阅读了kotlin文档,阅读kotlin源代码,并试图谷歌,但我真的很难理解这一点。 谢谢

() -> Unit是一个不需要任何参数的函数,不返回任何内容。 例如, Runnable.run()就是这样一个函数。 你可以看到这样一个任务的功能。

所以, (() -> Unit) -> Unit是一个函数,这个函数作为参数,并且什么也不返回。 例如, Executor.execute(Runnable)就是这样一个函数。 因此,它是一个以任务为参数的函数(很可能是现在,稍后执行一次或几次)。

下面是一个例子,它定义了一个函数来创建我刚刚称为一个任务,另一个函数返回一个执行程序,即一个执行任务的函数:

 fun createTask(): () -> Unit { return { println("Hello world") } } fun createExecutor() : (() -> Unit) -> Unit { return { task: () -> Unit -> println("I'm going to execute the task...") task() println("I'm going to execute the task a second time...") task() } } fun main(args: Array<String>) { val task = createTask() val executor = createExecutor() executor(task) } 

请注意,我仍然在学习Kotlin,所以我仍然在语法和概念上挣扎。

Interesting Posts