注意:这是一个常见问题解答,具体问我所以我可以自己回答,因为这个问题似乎经常出现,我想把它放在一个可以(希望)可以轻松找到的位置搜索
根据对answer here
的评论提示例如:
"abcde" map {_.toUpperCase} //returns a String
"abcde" map {_.toInt} // returns an IndexedSeq[Int]
BitSet(1,2,3,4) map {2*} // returns a BitSet
BitSet(1,2,3,4) map {_.toString} // returns a Set[String]
查看scaladoc,所有这些都使用从map
继承的TraversableLike
操作,那么为什么它始终能够返回最具体的有效集合呢?甚至是String
,它通过隐式转化提供map
。
答案 0 :(得分:79)
答案 1 :(得分:8)
Architecture of Scala Collections在线页面详细解释了基于2.8集合设计创建新馆藏的实际方面。
引用:
“如果你想集成一个新的集合类,那么需要做些什么,这样才能从正确类型的所有预定义操作中获益?在接下来的几页中,你将会看到两个这样做的例子。 “
它使用了一个用于编码RNA序列的集合和一个用于Patricia trie的集合。查找处理地图和朋友部分,了解如何返回相应的集合类型。