将视图返回到 ArraySeq 的最佳方法是啥?
Posted
技术标签:
【中文标题】将视图返回到 ArraySeq 的最佳方法是啥?【英文标题】:What is the best way to return a view to an ArraySeq?将视图返回到 ArraySeq 的最佳方法是什么? 【发布时间】:2021-10-29 17:15:34 【问题描述】:理想情况下,当从IndexedSeqView
处理ArraySeq
时,在经过一些操作后将视图转换回ArraySeq
时,应该只有一个数组副本(或至少只分配一个新数组)。
返回ArraySeq
的最有效方式是什么?
想到的几个选项:
ArraySeq.unsafeWrapArray(view.toArray)
看起来很有希望,但.toArray
是否知道视图位于数组之上并且可以使用快速数组副本来填充新数组?
ArraySeq.from(view)
我猜这是 O(n)
【问题讨论】:
【参考方案1】:标准方法是
view.to(ArraySeq)
【讨论】:
如果我遵循这个权利,看起来这最终会调用ArraySeq.from
。虽然这可能是错误的(它首先调用ArraySeq.fromSpecific
,但我还没有找到实现的地方)所以如果我错了请纠正我。【参考方案2】:
查看documentation,推荐的方法是调用view.force
来评估集合的转换。
【讨论】:
在 2.13 中已弃用,现在它只返回一个IndexedSeq
以上是关于将视图返回到 ArraySeq 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在一个视图上使用不同数据填充多个表的最佳方法是啥? [关闭]
将 iPad 应用程序转换为处理两种视图模式的最佳方法是啥?