Scala에서 다양한 갯수의 인자 받기
scala에서 다양한 갯수의 인자를 하나의 이름으로 받으려면 인자형 다음에 *
를 붙여준다. 다음과 같이 실제로는 Array형으로 전달된다.
def t[T](xs:T*) = xs.getClass
t(0) // class scala.collection.mutable.WrappedArray$ofInt
마찬가지로 List, Array 등을 가변인자에 전달하려고 할때는 변수 이름 다음에 _*
를 붙여준다.
def sum(xs:Int*):Int = if (xs.isEmpty) 0 else xs.head + sum(xs.tail:_*)
sum() // 0
sum(1) // 1
sum(1, 2, 3) // 6
val ns = List(1, 3, 5)
sum(ns:_*) // 9
This post is licensed under CC BY 4.0 by the author.