“const”和“val”有什么区别?
我最近读了关于const
关键字,我很困惑! 我无法找到它和val
关键字之间的任何区别,我的意思是我们可以使用它们来创建一个不可变的变量,还有什么我失踪?
const
是编译时间常量。 这意味着它们的值必须在编译期间分配,与val
s不同,它可以在运行时完成。
这意味着, const
不能被分配给一个函数或任何类的构造函数,而只能被分配给一个String
或者一个原语。
例如:
const val foo = complexFunctionCall() //Not okay val fooVal = complexFunctionCall() //Okay const val bar = "Hello world" //Also okay
只要加上卢卡的答案:
编译时常量
在编译时已知其值的属性可以使用const修饰符标记为编译时间常量。 这些属性需要满足以下要求:
- 对象的顶级或成员
- 使用String类型的值或基元类型初始化
- 没有自定义的getter
来源: 官方文件