官术网_书友最值得收藏!

Immutable reference  (referential immutability)

Referential immutability enforces that, once a reference is assigned, it can't be assigned to something else. Think of having it as a val property of a custom class, or even MutableList or MutableMap; after you initialize the property, you cannot reference something else from that property, except the underlying value from the object. For example, take the following program:

class MutableObj { 
    var value = "" 
 
    override fun toString(): String { 
        return "MutableObj(value='$value')" 
    } 
} 
 
fun main(args: Array<String>) { 
    val mutableObj:MutableObj = MutableObj()//(1) 
    println("MutableObj $mutableObj") 
    mutableObj.value = "Changed"http://(2) 
    println("MutableObj $mutableObj") 
 
    val list = mutableListOf("a","b","c","d","e")//(3) 
    println(list) 
    list.add("f")//(4) 
    println(list) 
} 

Have a look at the output before we proceed with explaining the program:

So, in this program we've two val properties—list and mutableObj. We initialized mutableObj with the default constructor of MutableObj, since it's a val property it'll always refer to that specific object; but, if you concentrate on comment (2), we changed the value property of mutableObj, as the value property of the MutableObj class is mutable (var).

It's the same with the list property, we can add items to the list after initialization, changing its underlying value. Both list and mutableObj are perfect examples of immutable reference; once initialized, the properties can't be assigned to something else, but their underlying values can be changed (you can refer the output). The reason behind that is the data type we used to assign to those properties. Both the MutableObj class and the MutableList<String> data structures are mutable themselves, so we cannot restrict value changes for their instances.

主站蜘蛛池模板: 辛集市| 河源市| 青海省| 泌阳县| 历史| 清徐县| 宁津县| 新化县| 定安县| 福鼎市| 十堰市| 佛教| 昌吉市| 通渭县| 甘孜县| 民权县| 乌兰浩特市| 介休市| 闸北区| 双桥区| 上虞市| 长垣县| 濉溪县| 平和县| 澄迈县| 崇义县| 瑞昌市| 清远市| 宜宾市| 普定县| 龙陵县| 桑日县| 玉林市| 九江市| 交城县| 太白县| 连平县| 盐山县| 射阳县| 高安市| 射洪县|