kotlin - 构造函数是 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 的构造函数,我可以假定它是一个函数吗?
解决方案
构造函数是一种函数,但在这里你没有将它作为函数传递,因为你已经通过在 lambda 函数中调用它来包装它。所以你已经传递了一个内部调用构造函数的函数。
您可以直接将构造函数作为函数传递,如下所示:
val c = C(::D)
推荐阅读
- javascript - 我试图让这个元素margin-top并简单地改变它
- android - 导致应用程序崩溃的 Android Memory Profiler 潜在错误
- node.js - 在微服务应用程序中实现 websocket
- javascript - 是否有在 Highcharts 上悬停元素时突出显示另一个统计/点/列的功能?
- python - seaborn 联合图颜色(按密度)
- python-3.x - 尝试递增整数时“必须是 str,而不是 int”
- javascript - 茉莉花独立中的辅助功能
- jquery - 使用 off() 删除事件后重新添加事件
- python - 带有 API 的 python 请求
- node.js - Nodejs 代码无法在 Windows10 上构建,但可以在 MacOS 上运行。可能是什么原因?