引用“列表”的通用方式是:在斯卡拉?
如何以更通用的方式引用 ArrayBuffer 和 Vector?
例如 - 我的一个函数采用 Vector 作为参数,而另一个函数返回 ArrayBuffer。 我可以使用的常见“iterface”是什么?
例如,在 Java 中,我可以使用 List 或 Collection 接口来传递它们。
How can I refer to ArrayBuffer and Vector in a more generic way?
For example - one of my functions takes a Vector as an argument, while another returns an ArrayBuffer.
What is a common "iterface" that I can use?
For example, in Java I could use List or Collection interface to pass them around.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有关集合类之间的继承关系的概述,请参阅此处。
您会发现 IndexedSeq 是ArrayBuffer 和 Vector。
编辑:IndexedSeq 与 Seq:
来自文档:
索引序列不会添加任何关于 Seq 的新方法,但承诺有效实现随机访问模式。
这意味着,在这种情况下,您可以像我们将使用 Seq,因为无论如何,ArrayBuffer 和 Vector 都会提供实现。See here for an overview of the inheritance relationship between the collections classes.
You'll see that IndexedSeq is a common trait for both ArrayBuffer and Vector.
EDIT: IndexedSeq vs. Seq:
From the doc:
Indexed sequences do not add any new methods wrt Seq, but promise efficient implementations of random access patterns.
This means that, in this context, you could just as well use Seq, as the implementations will be provided by ArrayBuffer and Vector in any case.我会使用 SeqLike 或更通用的 TraversableOnce 也适用于
Map
。I would use SeqLike or more generic TraversableOnce which would also apply for
Map
s.