如何在kotlin数据类中将非可空属性初始化为this指针?
给定Kotlin数据类,如何将非可空属性初始化为指向self的指针?就像下面的伪代码一样 .
data class Node(var other: Node = this)
目前我有一个引入临时属性的解决方案
data class Node(val _other: Node? = null) {
var other: Node = _other ?: this
}
给定Kotlin数据类,如何将非可空属性初始化为指向self的指针?就像下面的伪代码一样 .
data class Node(var other: Node = this)
目前我有一个引入临时属性的解决方案
data class Node(val _other: Node? = null) {
var other: Node = _other ?: this
}
2 years ago
你仍然需要:
equals
和copy
只会关心_other
而忽略other
(正如他们会忽略在类体中定义的所有其他属性一样) .other
是var
只会使情况变得更糟:重新分配它对数据类功能没有影响 .但你可以走近一点:
剩下的唯一问题是component1()将返回
_other
. 在这种情况下,您有一个属性,所以它应该无关紧要 .编辑:经过多思考后,
似乎有效地成为你想要的 . 你可以在这里看到差异:
使用第一个解决方案打印
false
,使用第二个解决方案打印true
(如果this
是默认参数,则应该如此) .