2016-08-04 75 views
0

我對斯卡拉非常非常陌生。我正在閱讀由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

SO的文檔(測試版)項目的[函數頁面](http://stackoverflow.com/documentation/scala/477/functions#t=201608041631299474664)中有一個varvargs條目。 – jwvh

回答

5

這是一個可變參數,或參數(0或更多)的可變數目。例如。

def takesNStrings(strings: String*) { 
    // you can now iterate through the zero or more strings... 
} 

一些examples here

1

它的可變參數。

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: _*) 

類型的xsf的內部是Seq[A]