2012-07-18 37 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, 「酒吧」)=> .. .'來表明你可以在匹配模式中分配vals。 – pedrofurla 2012-07-19 03:34:38

+1

完成,謝謝你的建議。 – 2012-07-19 07:48:49