2011-03-11 44 views
7

通过搜索,我理解的方式(或办法)到数组转换到一个列表就像这样:哪里阵列获得其toList方法

val l = Array(1, 2, 3).toList 

但不仅我找不到toList方法在Array的API文档中,我无法在似乎是Array的祖先或继承特征的任何东西中找到它。

使用较新的2.9 API文档,我看到toList存在于这些事情:

ImmutableMapAdaptor ImmutableSetAdaptor IntMap List ListBuffer LongMap 
MutableList Option ParIterableLike PriorityQueue Stack StackProxy 
StreamIterator SynchronizedSet SynchronizedStack TraversableForwarder 
TraversableOnce TraversableOnceMethods TraversableProxyLike 

但我无法理解toList从其中之一是如何获取要阵列的一部分。任何人都可以解释吗?

+0

如果它像Java一样,它是Array类的一个类方法。 – 2011-03-11 21:26:46

+0

就是这样,没有看到它:http://www.scala-lang.org/api/current/scala/Array.html – dino 2011-03-11 21:28:01

+0

是的,我注意到了......也许可怜的文档? – 2011-03-11 21:28:44

回答

13

toList和类似的方法对Java数组不原生地发现(包括我们的老歌,地图,flatMap,过滤等)来自s.c.m.ArrayOps,该阵列在scala.Predef通过隐式转换获得。寻找名字以ArrayOps结尾的隐式方法,你会看到魔法来自哪里。

+0

呵呵。并且该ArrayOps在该索引中对于以T开头的方法,尚未显示为包含toList:http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/library/index/index -t.html – dino 2011-03-11 21:34:34

+1

尝试使用'scalac -print'进行编译*真的*看到魔法。 – pedrofurla 2011-03-11 21:42:16

+2

@dino'导致ref索引不显示继承的成员。 toList在TransversableOnce中定义。 – pedrofurla 2011-03-11 21:43:18