它们并不是真正的重复,当然,我只是不知道如何用简短的方式来描述这个概念。它是关于属性获取器的,该属性获取器仅用于公开隐藏了访问权限的另一个属性的转换。在这里,让我用一段代码来解释:
class MyClass {
internal val _children = mutableListOf<MyClass>()
val children: List<MyClass> get() { return _children.toList() }
}
孩子可以在内部进行修改,也应该向外界公开,但是他们不能修改列表。我认为这是一个可以理解的情况。
我已经直观地选择了在Angular(打字稿)和c#中遇到的_name约定,在类似情况下,这似乎是常用的。 但是intellij抱怨,按照惯例, all 属性名称应以小写字母开头。
在Kotlin中是否有关于这种事情的另一种命名约定,或者IDE只是没有看到我正在尝试做的事情(这不足为奇),而我应该忽略它?
答案 0 :(得分:4)
是的,编码约定建议
就像在_children
之前一样,在私有支持属性名称前加一个下划线:
支持属性的名称
如果一个类具有两个在概念上相同的属性,但一个属性是公共API的一部分,而另一个属性是实现细节,请使用下划线作为私有属性名称的前缀:
class C { private val _elementList = mutableListOf<Element>() val elementList: List<Element> get() = _elementList }