2016-08-04 3 views
0

Я очень новичок в Scala. Я читаю книгу, названную функциональным программированием в scala Полом Чиусано и Рунаром Бьярнасоном. До сих пор я нахожу это интересным.Что такое A * в Scala?

я вижу следующее

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

Я хотел бы знать, как читать (как: A *), может кто-нибудь объяснить мне, что это или указать мне на некоторые интернет-документы, чтобы понять это?

Спасибо за вашу помощь

+0

На странице [Функции] (http://stackoverflow.com/documentation/scala/477/functions#t=2016080416312994746464) в документации по функциям SO (Документация) есть запись 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: _*) 

Тип xs внутри f является Seq[A].

Смежные вопросы