将视图返回到 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 应用程序转换为处理两种视图模式的最佳方法是啥?

从 Rails Helper 返回多个标签的最佳方法是啥?

在 SwiftUI 中将绑定传递给导航堆栈中每个视图的最佳方法是啥

在 QT 中实现具有多个小部件的视图的最佳方法是啥?

在 ASP.NET MVC 中构造视图层次结构的最佳方法是啥?