package com.ming.test
/**
* 模式匹配
*/
object MatchTest {
def main(args: Array[String]): Unit =
{
//match 基本用法
var sign=3
var m='w'
var str='d'
var digit="dsafdsafdsaf"
m match{
case '+' => sign=10
case '-' => sign=100
case _ => sign=200
}
println(sign)
sign=m match{
case '+' => 1000;
case '-' => 10000;
case _ => 1231
}
println(sign)
//带有守卫的匹配
sign=m match{
case '+' => 12;
case '-' =>23;
case _
if Character.isDigit(m) =>2;
case _ => 1000000
}
println(sign)
//类型模式
//var a=obj match{case x:Int=>x;case s : String => Integer.parseInt(s);case _:BigInt=>Int.MaxValue;case _ => 0}
//数组匹配
var array=Array(0,2
)
val s=
array match{
case Array(0)=>"0"
case Array(x,y)=>x+" "+
y
case Array(0,_*)=>"0 ......"
case _ =>"something else"
}
println(s)
//匹配列表
val list=List(0,212,3
)
var lst=
list match{
case 0 :: Nil =>"0"
case x :: y ::Nil => x+" "+
y
case 0 :: tail => "0...."
case _ =>"something else"
}
println(lst)
//元祖匹配
val yuanzu=(1,2,0
)
var zu=
yuanzu match{
case (0,_,1) => "0 ..."
case (y,0,0) => y+"0"
case _ => "neither is 0"
}
println(zu)
//变量中声明中的模式
val (x,y)=(1,2
);
println(x+
y)
//for 表达式中的模式
for((k,v)<-Map((1,""),(2,3))
if v !="")println(k+"->"+
v)
}
}
转载于:https://www.cnblogs.com/huzi007/p/6137566.html