간단한 패턴 매칭 예시이다.
case class Member(name: String)
object Main extends App {
val samuel = Member("samuel")
samuel match {
case Member(name) => println(name)
case _ => println("x")
}
}
결과는 다음과 같다.
samuel
패턴 매칭할 때, 객체를 통째로 받고 싶다면 어떻게 해야 할까?
이 때 @ 연산자를 사용한다.
case class Member(name: String)
object Main extends App {
val samuel = Member("samuel")
samuel match {
case p @ Member(_) => println(p)
case Member(name) => println(name)
case _ => println("x")
}
}
결과는 다음과 같다.
Member(samuel)
패턴매칭과 @가 합쳐진 예시이다.
object Main extends App {
(Some(1), Some(2)) match {
case d @ (c @ Some(a), Some(b)) => {
println(a)
println(b)
println(c)
println(d)
}
}
println
val d @ (c @ Some(a), Some(b)) = (Some(1), Some(2))
println(a)
println(b)
println(c)
println(d)
println
for (x @ Some(y) <- Seq(None, Some(1))) {
println(x)
println(y)
}
println
val List(x, xs @ _*) = List(1, 2, 3)
println(x)
println(xs)
}
결과는 다음과 같다.
1
2
Some(1)
(Some(1),Some(2))
1
2
Some(1)
(Some(1),Some(2))
Some(1)
1
1
List(2, 3)
'scala' 카테고리의 다른 글
[scala] filter, exists 성능 주의 (0) | 2016.09.29 |
---|---|
[scala] Odering/Ordered (sorted, sortBy, sortWith), TreeMap (0) | 2016.09.29 |
[scala] vararg, _* 타입 어노테이션 (0) | 2016.09.28 |
[scala] lazy, view (0) | 2016.09.28 |
[scala] Nill, Null, Nothing, Unit, null 간단 정리 (0) | 2016.09.28 |