Kotlin: why do I need to initialize a var with custom getter?

前端 未结 2 1074
臣服心动
臣服心动 2021-01-03 18:18

Why do I need to initialize a var with a custom getter, that returns a constant?

var greeting: String // Property must be initialized 
get() = \         


        
2条回答
  •  余生分开走
    2021-01-03 18:54

    Your code does not have a custom setter, so it is equivalent to:

    var greeting: String
        get() = "hello"
        set(v) {field = v}  // Generated by default
    

    The default implementation of set uses field, so you've got to initialise it.

    By the same logic, you don't have to init the field if nether your set nor get use it (which means they are both custom):

    var greeting: String  // no `field` associated!
        get() = "hello"
        set(v) = TODO()
    

提交回复
热议问题