在Scala中应用列表的方法

时间:2018-03-10 06:18:56

标签: scala

我知道Scala List可以创建为:

val l = List(1,2,3)

执行上述声明时,幕后的内容是什么? 这里调用apply方法吗?

根据scala文档:对于序列,apply是位置索引 http://docs.scala-lang.org/overviews/collections/seqs.html

那么,是否有2种应用方法,一种用于位置索引&另一个作为对象创建的工厂方法?

1 个答案:

答案 0 :(得分:5)

此调用实际上将随播广告对象上的apply方法调用到List类。

许多scala类都有一个伴随对象,它是一个与该类同名的单例对象。在此伴随对象上定义方法是scala等效于java的静态方法。这些伴随对象通常具有一个或多个apply方法,这些方法用作构造函数/工厂函数来创建类的实例。在这种情况下,List对象有一个方法,它接受相同类型的可变数量的参数,并创建这些对象的List

实际上,如果你定义一个case class,scala会自动定义一个伴随对象,除其他之外,还包括和apply方法,它接受与case类的构造函数相同的参数,这是为什么在构建案例类时不需要使用new

列表实例还有一个apply方法,用于索引列表,但由于它是在List 上定义的,它只适用于类,而不是对象List本身。