2016-09-09 2 views
-1

val myMap = Map("one" ->1, "two" -> 2)myVar = 2 다음과 같이 작동하지 않는 이유는 무엇입니까?지도의 결과와 패턴 매칭을 어떻게 할 수 있습니까?

myVar match{ 
    case myMap("one") -> // do a certain action 
    case _   -> // do another action 
} 

이 그러나 대신 myMap의 I 변수가있는 경우, 예를 들어, 작동 당신 때문에 우리가 적용 취소 방법의 구현을 필요로 패턴 매칭에 대한 오류

myVar match{ 
    case `one` -> "first element" 
    case _  -> "second element" 
} 
+2

무엇 너는 실제로하려고하니? 지도에서 값을 추출하는 대신지도에서 패턴 일치를 시도하고 패턴을 매기는 것은별로 의미가 없습니다. –

+0

지도에서 값을 추출하려고하는 것이 아니라 특정 동작과 연관시키기 위해 코드를 수정하여 명확하게했습니다. – John

답변

3

val one = 1 다음 match이된다 (자세한 내용은 this 읽기) -이 경우지도에서 이러한 매개 변수에는 적용 취소 방법이 없다 :

이 대신에 같이 쓸 수있는 옵션으로

def unapply(z: String): Option[Int]

:

myVar match { 
    case x if x == myMap("one") => "first element" 
    case _      => "second element" 
} 
관련 문제