我对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 *),任何人都可以解释它是什么,或者指向一些在线文档来理解这一点?
感谢您的帮助
答案 0 :(得分:5)
它是 varargs ,或可变数量的参数(0或更多)。 E.g。
def takesNStrings(strings: String*) {
// you can now iterate through the zero or more strings...
}
答案 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]
。