我正在学习集合,我刚刚在Traversable
docs中注意到这两种方法。第一个有什么意义?第二个似乎包括它。
copyToArray (xs: Array[A], start: Int, len: Int): Unit
copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit
我正在学习集合,我刚刚在Traversable
docs中注意到这两种方法。第一个有什么意义?第二个似乎包括它。
copyToArray (xs: Array[A], start: Int, len: Int): Unit
copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit
你是正确的,第二个包含第一个。然而,第一个实际上并不存在。如果您仔细查看文档,您会看到以下文字[use case]
:
abstract def copyToArray(xs: Array[A], start: Int, len: Int): Unit
[use case] Copies elements of this collection to an array.
Scala API 中的A[use case]
显示了签名的简化形式。这以一种对新 Scala 程序员来说并不那么可怕的方式提供了“典型”使用,否则他们可能会被疯狂的类型签名混淆。
您使用许多其他方法看到同样的事情,包括map
(其中CanBuildFrom
隐藏了这些东西):
abstract def map[B](f: (A) ⇒ B): CC[B]
[use case] Builds a new collection by applying a function to all elements of this collection.
def map[B, That](f: (A) ⇒ B)(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
Builds a new collection by applying a function to all elements of this collection.
要阅读 Martin Odersky 讨论该问题的旧帖子,请参见此处。
这似乎是一个 scaladoc 工件。
$ scala29
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val c = List(1,2,3)
c: List[Int] = List(1, 2, 3)
scala> c.copyToArray
def copyToArray[B >: A](xs: Array[B]): Unit
def copyToArray[B >: A](xs: Array[B], start: Int): Unit
def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit