JavaとScalaの違いその5 ... 最強、ぱた〜んまっちんぐうううう
今回はScalaでmatchingをします!
といってもJavaでswitchを知っている方にはありきたりなので
Javaとの違いだけちょろっと。
まず大きく違うのが、いろいろな型のマッチングが可能です。
コレクションもマッチングでき、型に応じた処理が簡単にできます。
また、型チェックなども容易です。ちなみに最後のmatching3では
条件をif式を用いて定義しています。
object MatchMatch extends App {
val list=List(1,3,5)
val list2=List(2,4,6)
def matching(num:List[Int]):String={
num match{
case List(2,4,6)=>"you did it!!"
case List(1,3,5)=>"Sorry,guys"
case _ =>"白"
}
}
println(matching(list))
def matching2(obj:Any):Int={
obj match{
case _:Int=>1
case _:String=>2
}
}
println(matching2(list(2)))
def matching3(iVal:Int):String={
iVal match{
case n if n>0 => {println("I am really glad")
"Oops!!"}
case _ => "Yeah"
}
}
println(matching3(3))
}
コンソール
Sorry,guys
1
I am really glad
Oops!!
※当たり前ながら単純に値を返すだけじゃなくcaseに応じた処理ができます(ここではprintln()のところです)。