2011年6月8日水曜日

Scalaきほんのき(今日はパターンマッチング)

対象 match {
 case パターン1 => 処理1 or 値1
 case パターンn => 処理n or 値n
 case _ => default処理 or default値
}

ここにもありました、魔法の言葉。

魔法の言葉はおいといて(おい!)
これって、case文みたいなもん?
使い方は、こんな感じです。
scala> val n = 10
n: Int = 10

scala> n match {
     | case 10 => println("ten")
     | case _ => ()
     | }
ten

文字列でもできちゃったりします。
scala> val str = "hello"
str: java.lang.String = world

scala> str match {
     | case "hello" => println("hello world")
     | case _ =>  ()
     | }
hello world
VBみたいですね。

そー思った人、あまーい( ̄ー ̄)

なんと、関数でもOKなんです。
この例だと、Listの要素をabcdそれぞれに割り当てていて、処理で合計しています。
scala> List(1,2,3,4) match {
     | case List(a,b,c,d) => a+b+c+d
     | case _ => ()
     | }
res15: AnyVal = 10
すごくないですか?

それと、型にマッチさせることもできやがるんですよ、こいつは
scala> val v: Any = "hoge"
v: Any = hoge

scala> v match {
     | case i: Int => i * 100
     | case s: String => s.size
     | }
res16: Int = 4
すごくないですか!?

興奮しすぎたので休みます。

0 件のコメント:

コメントを投稿