arrays - Kotlin 不可变数组
问题描述
Kotlin 列表有独立的可变和不可变变体,前者派生自后者。但据我了解,对于数组,本身没有单独的不可变类型。相反,不可变数组声明为Array<out Foo>
.
这个对吗?
如果是这样,那么数组和列表类型在这方面设计不同的原因是什么?
解决方案
这是正确的,Array
s 都是可变的,数组没有单独的只读接口。
这样做的原因是数组是低级构建块,通常不应该在 API 中公开或通过封装边界,一般来说,没有理由在数据结构实现之外的列表上使用数组,有时,性能-关键代码。人们应该更喜欢列表和其他集合来进行更高级别的操作。
因此,鉴于数组通常由一个单一的、一致的逻辑块封装和“拥有”,因此为不公开变异函数的数组引入一个单独的类型并不是那么实际。
推荐阅读
- javascript - 如何在 next.js 应用程序中从服务器端获取客户端的 IP 地址?
- python - pyspark 中的 Java
- json - 如何在 Jmeter 中创建动态请求
- python - 在自定义生成器中调整图像大小时出错
- mysql - MySQL max 和 MIN 函数显示 100 及以上作为最小值
- javascript - 如何减小 DOM 的大小?
- 3d - 如何从点云可视化 SHOT(方向直方图的签名)描述符?
- c++-winrt - WinUI3/Desktop/C++: 无法编译 winrt::resume_foreground(Microsoft::System::DispatcherQueue const& dispatcher)
- c# - CEFsharp:告诉网站页面浏览器窗口在整个页面上打开的代码?
- javascript - 有没有办法重写这个基本功能,所以我不会重复两次相同的行?