我正在阅读我的团队的现有代码库,我注意到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)
由于列表在创建时未初始化,为什么不声明mutableListOf为var?网上找到的很多示例也遵循相同的声明mutableListOf模式val。
在所描述的 2 个场景中哪个最适合使用,val或者var?
我认为它被声明为 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)
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |