스칼라에서의 가변인자
1. 간단 예제
object test {
def func[T](xs:T*) = xs.foreach(x => println(x))
def main(arg : Array[String]): Unit ={
func(0,1,2)
}
}
(xs : T*) 처럼 타입뒤에 * 를 붙혀주면 됩니다.
2. 컬렉션은 _* 를 붙여줍니다.
object test {
def sum(xs:Int*):Int = if (xs.isEmpty) 0 else xs.head + sum(xs.tail:_*)
def main(arg : Array[String]): Unit ={
println(sum(0,1,2,3)) // OK !
val ns = List(1, 3, 5)
println(sum(ns:_*)) // OK!
println(sum(List(1, 3, 5))) // Not Good
}
}
: _* 를 붙여줌으로써 컴파일러에게 가변인자라는것을 알려줍니다.
'Scala' 카테고리의 다른 글
| 스칼라 강좌 (35) lambda 익숙해지기 (0) | 2017.02.17 |
|---|---|
| 스칼라 강좌 (34) 동시성을 위한 Future (0) | 2017.02.16 |
| 스칼라 강좌 (32) -타입기초/ 타입별칭 /추상 타입/ 타입 경계 / 변성 (0) | 2016.12.07 |
| 스칼라 강좌 (31) - 스칼라에서 사용되는 심볼들 (0) | 2016.12.07 |
| 스칼라 강좌 (30) - type projection ( # 에 관하여) (0) | 2016.12.06 |