2012-09-18 82 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