加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读