2012-09-18 110 views
1

我想要做這樣的事情:模式匹配穿過斯卡拉

val a = v match { 
    case 1 => 1 
    case 2 if (condition) => logging 
    case 2 if (other conditions) => 3 
    case 2 if (more conditions) => 4 
    case _ => 5 
} 

我想這回只要登錄了第一例2,而是通過另外落在看什麼獲取返回

編輯:更新

+3

爲什麼不寫真正的代碼運行並做你想要的,if語句和返回以及你需要的任何東西,然後詢問如何改進它?我不確定你在這裏想要什麼。 –

+0

更新,坦克.. – Timmy

+1

這還不是真正的代碼,運行並做你想做的。你仍然在想象比賽陳述的運作方式與他們實際做法不同,然後希望我們能夠猜出你的想象。 –

回答

5

Scala的情況下匹配不「落空」,但如果我理解正確的話,這會做什麼你想。

val a = v match { 
    case 1 => 1 
    case 2 => { 
    logging // I'm assuming `logging` is some Unit 
    if(some condition) 3 
    else if(some other condition) 4 
    else 5 
    } 
    case _ => 5 
} 
2

這樣的事情?

如果v == 2a將被分配logging否則a將被分配的v

val a = v match { 
    case 2 => logging 
    case _ => v 
} 
+0

我的邏輯更像是如果v = 2,日誌,然後通過,所以在這種情況下,它會轉到默認情況_並返回4. – Timmy

+0

如果v == 3,該怎麼辦? – Kyle