Kotlin 不可变数组

rwa*_*ace 4 arrays kotlin

Kotlin 列表有独立的可变和不可变变体,前者源自后者。但据我了解,对于数组,本身没有单独的不可变类型;相反,一个不可变数组被声明为Array<out Foo>.

这样对吗?

如果是这样,在这方面设计数组和列表类型的原因是什么?

hot*_*key 7

这是正确的,Arrays 都是可变的,数组没有单独的只读接口。

这样做的原因是数组是低级构建块,通常不应在 API 中公开或通过封装边界传递,一般来说,没有理由在数据结构实现之外的列表上使用数组,有时,性能-关键代码。对于更高级别的操作,人们应该更喜欢列表和其他集合。

因此,鉴于数组通常由一个单一的、一致的逻辑部分封装和“拥有”,为不公开变异函数的数组引入一个单独的类型并不是那么切合实际。