2012-07-18 4 views
2

다음과 같이 내가 콜론으로 구분 된 문자열에 일치하는 몇 가지 패턴을하고 있어요에 패턴 매칭 동안 중간에 이름을 지정하는 방법 :스칼라

case s:String => s.split(":") match { 
    case Array("foo","bar") => ... 
    case Array("hello",_,_) => ... 
    ... 
} 

어떻게 반환 된 배열에 이름을 지정하는 코드를 다시 정렬 할 수 있습니다 에 의해 s.split(":")?

는 나는 아무 소용에 다음을 시도했다 :

case s:String => val x = s.split(":") match { 
    case Array("foo","bar") => // try to use x here 
    ... 
} 

답변

7
case s:String => s.split(":") match { 
    case x @ Array("foo","bar") => ... 
    case x @ Array("hello",_,_) => ... 
    ... 
} 

또는

case s:String => 
    val x = s.split(":") 
    x match { 
    case Array("foo","bar") => ... 
    case Array("hello",_,_) => ... 
    case Array(aStr, "bar") => println(aStr.toUpperCase) 
    ... 
} 
+1

은 내가'경우의 배열 (F, "바") =>를 추가 할 것입니다 .. . "당신이 일치하는 패턴 안의 val을 지정할 수 있음을 보여주기 위해서. – pedrofurla

+1

작성 해 주셔서 감사합니다. –