Top > Scala > Match


コマンドプロンプトで試した結果です。
Scalaのmatch=swichですね。

breakが要らない。次のcaseまでが処理される。
caseで判定ができる。
caseで関数を呼び出しても良い。自身を再帰的に呼び出せる。
caseで「|」で複数の条件をまとめれる。
「_」がワイルドカードになる。

◆まずはMatchの関数を作成
scala> def match_int(porute: Int) = porute match {
| case 0 => 100
| case n if n < 0 => 0
| case 1 | 2 | 3 => 200
| case _ => 300
| }
match_int: (porute: Int)Int

引数の値を変えて、作成した関数を呼び出してみましょう
scala> var acha = -1
acha: Int = -1

scala> match_int(acha)
res__: Int = 0

scala> acha = 0
acha: Int = 0

scala> match_int(acha)
res__: Int = 100

scala> acha = 2
acha: Int = 2

scala> match_int(acha)
res__: Int = 200

scala> acha = 5
acha: Int = 5

scala> match_int(acha)
res__: Int = 300

◆型のマッチング
scala> def match_any(piipo: Any) = piipo match {
| case s:String => "length="+s.length
| case i:Int => match_int(i)
| case a:AnyRef => a.getClass.getName
| case _ => "null"
| }
match_any: (piipo: Any)Any

引数の値を変えて、作成した関数を呼び出してみます。
(…Stringで演算するような不具合は減るかなー)

scala> var acha = "boo"
acha: String = boo

scala> match_any(acha)
res__: Any = length=3

scala> var acha = -1
acha: Int = -1

scala> match_any(acha)
res__: Any = 0

scala> acha = 5
acha: Int = 5

scala> match_any(acha)
res__: Any = 300

scala> match_any(null)
res__: Any = null



Copyright © 2015 AchaPorutePiipo All Rights Reserved.