首页 > 解决方案 > Kotlin:mutableList 应该声明为 Val 还是 Var?

问题描述

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

val jobList = mutableListOf<JobActivity>()
jobList.addAll(job.activities)

在其他情况下,元素被添加到mutableListOf循环中。例如

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

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

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

标签: kotlin

解决方案


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

joblist = anotherList

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

data class Example(var name: String)

val exampleObject = Example("SomeName")

你仍然可以这样做:

exampleObject.name = "AnotherName"

但你不能这样做:

exampleObject = anotherObject

推荐阅读