Skip to content

Scala:Vararg

vararg, _* 타입 어노테이션

Example

Scala에서 vararg에 대한 처리 내용을 설명한다.

object Objective {
  def printAll(values: String *): Unit = {
    values.foreach(print)
  }
}

object Main extends App {
  Objective.printAll("aaaa", "bbbbbb")
  println()
  val vals = List("aaaa", "bbbbbb")
  Objective.printAll(vals : _*)
}

결과는 다음과 같다.

aaaabbbbbb
aaaabbbbbb

String*과 같은 표현으로 String 타입의 vararg를 정의하고,

호출할 쪽에서는 List컬렉션을 : _*으로 바꿔 전달했다.

자바 개발자에게는 황당할 수 있지만, Scala Language Specification의 4.6.2 Repeated Parameters를 살펴보면, 관련 내용이 나오고 있다. _*를 말할 때 _* 타입 어노테이션 라고 한다.

Smooch operator또는 unpacker라고 하기도 한다.

See also

Favorite site