Scala中的A *是什么?

时间:2016-08-04 16:23:59

标签: scala

我对Scala非常新。我正在阅读Paul Chiusano和RúnarBjarnason在scala中编写的一本名为函数式编程的书。到目前为止,我发现它很有趣。

我看到以下

def apply[A] (as:A*) : List[A] =
  if(as.isEmpty) Nil
  else Cons(as.head,apply(as.tail: _*))

我想知道如何阅读(如:A *),任何人都可以解释它是什么,或者指向一些在线文档来理解这一点?

感谢您的帮助

2 个答案:

答案 0 :(得分:5)

它是 varargs ,或可变数量的参数(0或更多)。 E.g。

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

一些examples here

答案 1 :(得分:1)

这是varargs。

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]