Kotlin:公共私有集变种

Jas*_*ues 85 kotlin

在kotlin中定义具有公共getter和private(仅可内部修改)setter的var的正确方法是什么?

D3x*_*ter 138

var setterVisibility: String = "abc" // Initializer required, not a nullable type
    private set // the setter is private and has the default implementation
Run Code Online (Sandbox Code Playgroud)

请参阅:属性Getter和Setter

  • ...或在同一行,分号后:`var abc:String =""; 私人套装 (19认同)
  • 请注意,`private set`必须在新行上. (10认同)
  • 我对于如何处理主构造函数字段感到茫然. (4认同)
  • @JasperBlues ...否则,你需要在`private set`之前添加分号. (3认同)
  • @ user3175580这是不可能的.在主构造函数中使用本地字段,然后将值赋给属性,如"class Foo(_bar:String){var bar:String = _bar} (2认同)
  • 我更喜欢 swift 风格 - `private(set) var abc : String = ""` (2认同)

ARG*_*Geo 6

您可以使用以下方法轻松实现

var atmosphericPressure: Double = 760.0
    get() = field
    private set(value) { 
        field = value 
    }
Run Code Online (Sandbox Code Playgroud)

参阅Kotlin中有关Medium:PropertyProperty,Getter和Setter的文章

希望这可以帮助。

  • `get() = field` 不是多余的吗? (10认同)