答案 0 :(得分:5)
List
扩展了GenTraversableOnce
特征,这是许多其他可遍历集合的共同特征。
GenTraversableOnce
declares一个toList
方法,以便所有子类都可以转换为List
。这个方法必须由List
实现(事实上,通过返回this
来实现)。
答案 1 :(得分:5)
考虑这样的事情:
def bar(strings: List[String]) = strings.foreach(println)
def foo(ints: Seq[Int]) = bar(int.map(_.toString).toList)
foo(List(1,2,3))
foo(1 to 3)
foo(Stream.from(1).take(3))
等
foo
接受Seq
个整数,将其转换为字符串,然后调用需要bar
的{{1}}。
您可以向List
发送任何类型的Seq
,并在调用foo
之前使用.toList
将其转换为List
,因为&#1} 39;它是唯一可以接受的类型。现在,如果bar
的参数恰好是foo
(就像上面的第一个例子中一样),它最终会调用List
,这只是一个更好,更优雅的替代方案。在代码中创建一个特殊情况来检查参数的具体类型。