본문 바로가기

Programming/Scala

function's placeholder annotation

Scala 에서 아래와 같이 코드를 작성할 수 있다.


val list = List("abc", "def", "ddddd")


list.map(str => Vector(str: _*))


결과가 어떻게 될까?


재미있게도 아래와 같이 나온다.

List[scala.collection.immutable.Vector[Char]] = List(Vector(a, b, c), Vector(d, e, f), Vector(d, d, d, d, d))


여기서 str: _* 은 무슨 일을 하는 녀석일까?

이 녀석은 str 안에 있는 Char 들의 갯수만큼 Vector 에 인자들을 추가하라는 이야기 이다.

코드는 엄청 간결하지만, 많은 일을 하고 있다.

하지만 문법이 조금 난해하다.