开发者学堂课程【Scala 核心编程 - 进阶:匹配数组】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9072
匹配数组
基本介绍
(1)Array(0) 匹配只有一个元素且为0的数组。
(2)Array(x,y) 匹配数组有两个元素,并将两个元素赋值为x和y。当然可以依次类推 Array(x,y,z)配数组有3个元素的等等....
(3)Array(0,_*)匹配数组以0开始
应用案例
for (arr<-Array(Array(0),Array(1,0), Array(0, 1, 0),
Array(1, 1, 0), Array(1, 1, 0, 1))) {
val result =arr match {
case Array(0) => "O"
case Array(x, y) => x + "=" + y
case Array(0_*)=>"以0开头和数组"
case_=>"什么集合都不是"
}
// result = 0
// result = 1 = 0
// result = 以0开头和数组
// result = 什么集合都不是
// result = 什么集合都不是
println("result =" + result)
}
说明:
通过增加和删除 for 循环的数组,来看代码运行的结果,加强学员对匹配数组的理解
[案例演示+代码说明]
新建命名为 MatchArr 放入上方代码
如果数组是以0为开头的,返回0。如果数组以x,y 为开头,返回 x + "=" + y。
注意:
for (arr<-Array(Array(0),Array(1,0), Array(0, 1, 0)和Array(1, 1, 0), Array(1, 1, 0, 1))) {
可以改为 val arrs=Array(Array(0),Array(1,0), Array(0, 1, 0)和for(arr<-arrs){ 效果一样。
//给你一个数组集合,如果该数组时 Arry(10,20),请使用默认匹配,返回 Array(10,20)
val arrs2 =Array(Array(0),Array(1,0),Array(0, 1, 0),
Array(1,1,0),Array(1,1,0,1))
for (arr <- arrs2 ) {
val result =arr match {
//case Array(0)=> "0"
case Array(x, y) =>Array(y,x)
//case Array(0,_ *)=>"以@开头和数组"
case _=>"不处理~~"
}
println("result = " + result)
思考 case Array(x, y)=> ArrayBuffer(y,x)//? ArrayB(y,x) 如何解决。
