Mik*_*son 1 accessor immutability kotlin
在培训视频中,我看到了一个简洁的“技巧”,以演示访问器,如下所示:
val alive
get() = health > 0
Run Code Online (Sandbox Code Playgroud)
这提供了一种很好的,简单的方法来提供一个“ getter and setter”,其中“ setter”实际上只是一个衍生值。我都明白
但是我想我不太理解什么val意思,因此“不变”的意思是。我在想象内存中的位置不可更改。这真的是这里发生的事吗?也许内存中的位置实际上指向期望值(健康)的表达式,因此实际上这是不可变的。
您只需要将其val视为只读而不是不可变的即可。
另外,请注意,您并不是将表达式声明为val,而是将其声明为property。
声明一个val属性只会为该属性生成一个getter,而不是一个setter。在Java中,您可能已经编写了相同的“计算获取器”(没有背景字段,也没有设置器):
public class Player {
private int health = 100;
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public boolean isAlive() {
return health > 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我在想象内存中的位置不可更改。
如您在上面的Java等效物中所看到的,它甚至不在内存中(没有备用字段)中。每次访问该属性时(内部使用生成的getter进行访问),都会再次评估运行状况> 0的表达式,并且该值可能会与之前对该属性的访问产生不同的值。
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |