首页 > 解决方案 > 构造函数是 Kotlin 中的函数吗?

问题描述

我刚刚遇到一个数据类如下。

class A{
}
sealed class B
data class C(val isNext: Boolean = false, val builder: () -> A): A
class D: A{
}

为了创建该类的实例,开发人员使用了以下声明。

C{D()}

我对 lambda 的理解() -> A是,它是一个没有名称的函数,它不带参数并创建一个 A 的实例,但是鉴于调用了 A 的构造函数,我可以假定它是一个函数吗?

标签: kotlin

解决方案


构造函数是一种函数,但在这里你没有将它作为函数传递,因为你已经通过在 lambda 函数中调用它来包装它。所以你已经传递了一个内部调用构造函数的函数。

您可以直接将构造函数作为函数传递,如下所示:

val c = C(::D)

推荐阅读