在Scala中应用列表的方法

问题描述 投票:2回答:1

我知道Scala List可以创建为:

val l = List(1,2,3)

执行上述语句时,幕后发生了什么?这里调用apply方法吗?

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

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

scala
1个回答
5
投票

这个调用实际上将伴随对象上的apply方法调用到List类。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.