scala-モードマッチングとサンプルクラス
10398 ワード
パターンマッチングとサンプルクラスモードマッチング より良いswitch 守備 配列、リスト、およびメタグループ に一致するサンプルクラス パターンマッチング
より良いswitch
scalaには、switch文、タイプクエリ、および「プロファイル」(複雑な式の異なる部分を取得)に適用できる非常に強力なモードマッチングメカニズムがあります.
ガード
すべての数字に一致するガードを追加します.
配列、リスト、およびメタグループの一致
一致配列配列配列配列配列の内容を一致させるには、パターンでArray式を使用します.
一致リスト一致メタグループ
サンプルクラス
サンプルクラス対モードマッチングで最適化
より良いswitch
scalaには、switch文、タイプクエリ、および「プロファイル」(複雑な式の異なる部分を取得)に適用できる非常に強力なモードマッチングメカニズムがあります.
object Test {
def main(args: Array[String]): Unit = {
println(matchTest('-'))
}
def matchTest(x:Char):Int = x match {
case '+' => 1
case '-' => -1
case _ => 0
}
}
1、match java switch
2、 switch 。scala “ ”
3、 => ,
4、 , MatchError。 case_ 。
5、 if ,match ,
ガード
すべての数字に一致するガードを追加します.
// Character.digit(ch,radix) radix ch
// Boolean
//
object Test {
def main(args: Array[String]): Unit = {
println(matchTest('-'))
println(matchTest('2'))
}
def matchTest(ch:Char):Int = ch match {
case '+' => 1
case '-' => -1
case _ if Character.isDigit(ch) => Character.digit(ch,10)
case _ => 0
}
}
配列、リスト、およびメタグループの一致
一致配列配列配列配列配列の内容を一致させるには、パターンでArray式を使用します.
object Test {
def main(args: Array[String]): Unit = {
println(matchTest(Array(0)))
println(matchTest(Array(0,1)))
println(matchTest(Array(0,1,2)))
println(matchTest(Array(1,2,3)))
}
def matchTest(arr:Array[Int]):String = arr match {
case Array(0) => "0" // 0
case Array(x,y) => x + " " + y // , x y
case Array(0,_*) => "0 ..." // 0
case _ => "something else"
}
}
// :
0
0 1
0 ...
something else
一致リスト一致メタグループ
サンプルクラス
サンプルクラス対モードマッチングで最適化