Scala为什么List类定义了toList方法?

时间:2017-05-26 15:39:46

标签: scala

scala文档在类List中定义了以下方法:

def toList: List[A]

据我所知,这个方法只返回初始列表的副本。 toList method

这种方法的用例是什么?

2 个答案:

答案 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,这只是一个更好,更优雅的替代方案。在代码中创建一个特殊情况来检查参数的具体类型。