我對斯卡拉非常非常陌生。我正在閱讀由Paul Chiusano和RúnarBjarnason編寫的scala函數式編程書。到目前爲止,我發現它很有趣。斯卡拉的A *是什麼?
我看到下面的
def apply[A] (as:A*) : List[A] =
if(as.isEmpty) Nil
else Cons(as.head,apply(as.tail: _*))
我想知道如何閱讀(如:A *),任何人可以解釋我它是什麼或點我一些在線文檔理解?
感謝您的幫助
我對斯卡拉非常非常陌生。我正在閱讀由Paul Chiusano和RúnarBjarnason編寫的scala函數式編程書。到目前爲止,我發現它很有趣。斯卡拉的A *是什麼?
我看到下面的
def apply[A] (as:A*) : List[A] =
if(as.isEmpty) Nil
else Cons(as.head,apply(as.tail: _*))
我想知道如何閱讀(如:A *),任何人可以解釋我它是什麼或點我一些在線文檔理解?
感謝您的幫助
這是一個可變參數,或參數(0或更多)的可變數目。例如。
def takesNStrings(strings: String*) {
// you can now iterate through the zero or more strings...
}
它的可變參數。
def f[A](xs: A*) = xs.foreach(println)
您可以通過幾種方式調用此函數。
在沒有參數:
f()
傳遞多個參數(可以使用任何數量的參數):
f(1, 2, 3, 4)
傳遞一個序列:
val a = Seq(1,2,3,4) // other collections work as well
f(a: _*)
類型的xs
f
的內部是Seq[A]
。
SO的文檔(測試版)項目的[函數頁面](http://stackoverflow.com/documentation/scala/477/functions#t=201608041631299474664)中有一個varvargs條目。 – jwvh