Kotlin:为什么我需要使用自定义getter来初始化var? [英] Kotlin: why do I need to initialize a var with custom getter?

查看:65
本文介绍了Kotlin:为什么我需要使用自定义getter来初始化var?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我需要使用自定义getter初始化var并返回常量?

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

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

当我将greeting设为只读(val)

推荐答案

这背后的原因是

Reason behind this is Backing field. When you create val with custom getter that does not use field identifier to access its value, then backing field is not generated.

val greeting: String
    get() = "hello"

如果这样做,则将生成后备字段,需要对其进行初始化.

If you do, then backing field is generated and needs to be initialized.

val greeting: String // Property must be initialized
    get() = field

现在加入var.由于默认情况下会生成后备文件,因此必须将其初始化.

Now with var. Since backing filed is generated by default, it must be initialized.

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

要使此方法在无需初始化的情况下适用于var,必须提供一个自定义的setter来防止生成备用字段.例如:

For this to work for var without initialization, you must provide a custom setter to prevent generation of backing field. For example:

var storage: String = ""
var greeting: String
    get() = "hello"
    set(value) { storage = value}

这篇关于Kotlin:为什么我需要使用自定义getter来初始化var?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆