Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Match "fallthrough": executing same piece of code for more than one case?

Tags:

scala

What is the Scala's way to write the following code:

 int i;   switch(i) {    case 1:            a();          break;     case 2:    case 15:         b();         c();         break;     default: foo()          }  

I.e. what is the idiomatic way of executing the same piece of code based on multiple case values?

 i match {    case 1  => a        case 2  =>    case 15 => { b                 c }    case _ => foo          }  

Doesn't quite seem do the trick, since Scala evaluates the match value based on the first matching case, i.e. if i=2 the code will return nothing.

Thanks for help!

like image 645
Vlad Gudim Avatar asked Feb 24 '10 12:02

Vlad Gudim


1 Answers

According to this conversation there is no fallthrough, but you can make use of |.

This should do the trick:

i match {   case 1  => a       case 2 | 15 => b                  c   case _ => foo         }  
like image 154
middus Avatar answered Sep 17 '22 12:09

middus