Kotlin:mutableList 应该声明为 Val 还是 Var?

Gra*_*Sim 1 kotlin

我正在阅读我的团队的现有代码库,我注意到mutableListOf总是声明为val. 在某些场景下,元素只添加mutableListOf一次。例如

val jobList = mutableListOf<JobActivity>()
jobList.addAll(job.activities)
Run Code Online (Sandbox Code Playgroud)

在其他场景中,元素被添加到mutableListOf循环中。例如

val jobList = mutableListOf<JobActivity>()
newJobList.filterScanType(retrieveJobType(JobContext.NEW)).forEach {
    jobList.add(it)
}
Run Code Online (Sandbox Code Playgroud)

由于列表在创建时未初始化,为什么不声明mutableListOfvar?网上找到的很多示例也遵循相同的声明mutableListOf模式val

在所描述的 2 个场景中哪个最适合使用,val或者var

Ale*_*ker 6

我认为它被声明为 val 因为列表总是相同的,唯一改变的是它的元素。你永远不会做类似的事情:

joblist = anotherList
Run Code Online (Sandbox Code Playgroud)

正如@Taseer所说,即使它是一个val,对象的属性也可以更改。例如:

data class Example(var name: String)

val exampleObject = Example("SomeName")
Run Code Online (Sandbox Code Playgroud)

您仍然可以执行以下操作:

exampleObject.name = "AnotherName"
Run Code Online (Sandbox Code Playgroud)

但你不能这样做:

exampleObject = anotherObject
Run Code Online (Sandbox Code Playgroud)