Scala 语言之模式匹配(6)
发布时间:2020-12-16 09:45:05 所属栏目:安全 来源:网络整理
导读:== Scala?有一个强大的模式匹配机制, ?类似于 switch?语句 ,可以实现对类型的判断以及检查,还提供了样本类,使其可以对样本类的对象进行模式匹配 == 模式匹配示例 var?v1?=?0var?ch1?=?"-"ch1?match{??case?"+"?=?v1?=?1??case?"-"?=?v1?=?-1??case?_?=?v
==> Scala?有一个强大的模式匹配机制,?类似于 switch?语句,可以实现对类型的判断以及检查,还提供了样本类,使其可以对样本类的对象进行模式匹配 ==> 模式匹配示例 var?v1?=?0 var?ch1?=?"-" ch1?match{ ??case?"+"?=>?v1?=?1 ??case?"-"?=>?v1?=?-1 ??case?_?=>?v1?=?0 } println(v1) ==>?Scala?守卫 //?Scala?守卫?匹配某种类型的所有值 var?v2?=?'6' var?ch2:Int?=?-1 v2?match{ ??case?'+'?=>?println("这是一个+") ??case?'-'?=>?println("这是一个?-") ??case?_?if?Character.isDigit(v2)?=>?ch2?=?Character.digit(ch2,?10) ??case?_?=>?println("其它类型") } println("ch2:"?+?ch2) ==>?模式匹配中的变量 //?模式中匹配变量 var?v3?=?"Hello" v3(1)?match{ ??case?'+'?=>?println("这是一个?+?") ??case?'-'?=>?println("这是一个?-") ??case?ch?=>?println("这是"?+?ch) } ==>?模式匹配中的数组和列表 //?匹配数组和列表 var?myarray?=?Array(1,2,3) myarray?match?{ ??case?Array(0)?=>?println("0") ??case?Array(x,?y)?=>?println("这是列表,包含两个元素,和是:?"?+?(x+y)) ??case?Array(x,?y,?z)?=>?println("包含三个元素,乘积是:?"?+?(x*y*z)) ??case?Array(x,?_*)?=>?println("这是一个数组") } var?mylist?=?List(1,3,4) mylist?match{ ??case?List(0)?=>?println("0") ??case?List(x,?y)?=>?println("这是两个元素,乘积是:"?+?(x+y)) ??case?List(x,?z)?=>?println("这是一个三个元素的数组,乘积是:?"?+?(x*y*z)) ??case?List(_*)?=>?println("这是一个多元素数组") } ==>?样本类(CaseClass)?在类前面加?case?关键字,?其最大的好处就是?支持模式识别 //?通过使用样本类判断对象是否属于类 var?aCar:DemoCaseClass?=?new?Bicycle("car") aCar?match{ ??case?Car(name)?=>?println("I?am?a?car") ??case?Bicycle(name)=>?println("i?am?a?zixingche|") ??case?_?=>?println("other") } class?DemoCaseClass case?class?Car(name:String)?extends?DemoCaseClass case?class?Bicycle(name:String)?extends?DemoCaseClass (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |