GenTraversableOnce
不会将map声明为(抽象)成员,但它的直接子节点
GenTraversable
和
TraversableOnce
都是如此(尽管后者使用隐式转换).为什么?
如果我需要一个实现map的集合,我应该声明它是什么类型的?
This question是完全不同的,因为它要求在Scala中实现仿函数的方法,而我正在询问Scala集合框架的细节.
编辑
它与您可以遍历GenTraversableOnce的次数无关,因为TraversableOnce对可能的遍历数量做出相同的承诺(即两者都承诺至少一次遍历).
最佳答案 我不记得在任何地方看过这个,但这里是我对它的直觉(没有任何参考/引用所以带着一点点盐).
正如GenTraversableOnce的名称所暗示的那样,这种特性只能保证对遍历内容的一次迭代.
地图操作在某种程度上暗示了链接变换的可能性(例如foo.map(f).map(g)),这意味着多次遍历.