开发者学堂课程【Scala 核心编程 - 进阶:匹配列表】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9073
匹配列表
应用案例
代码:
for(list<-Array(List(0),List(1,0),List(0,0,0),List(1,0,0))){
Val result=List match{
case 0::Nil=>“0”//
case X::y::Nil=>x+“”+y//
case 0::tail=>“0...”//
case _=>“something else”
}
println(result)
}
这个数组里面有很多 List, 然后循环遍历,这面有 List 我mach,如果这个 List 是以0打头的,就返回一个0,如果至少有2个元素,我们就返回case X::y::Nil=>x+“”+y//,如果它是以0,就返回一个0后面有任意就输入 tail。
tail 就代表后面有任意的,如果他不满足这些条件就返回一个 something else。
也就说这种方式 List 匹配,演示一下,匹配列表的案例 object MathList
object MathList
def main (args:Array [string]):Unit={
for (List<-Array(List(0),List(1,0),List(0,0,0),List(1,0,0))){
val result=List match{
case 0::Nil=>“0”//
case X::y::Nil=>x+“”+y//
case 0::tail=>“0...”//
case -=>“something else”
}
//1.0
//2.10
//3.0....
//4.something else
然后我们直接去的输出,第一个 List0应该匹配到 Nil, 因此第一个结果就是0,第二个1,0,应该匹配 x::y,x,y 不是固定的,这里写 a,b 的话,后面也要写 a,b只要是变量就行,第三个0,0,0应该跟 tail 匹配,tail 可以变,这个地方没有做要求,第四个1,0,0匹配不到,所以就应该是 something else,执行之后这个输出结果和我们想的是一样的。
Println(resnlt)
请思考,如果要匹配 List(88)这样只含有一个元素的列表要怎么写呢?
很简单,如果我们要完成这个功能的话,其实可以在这里增加一个 List(88),因为他只有一个元素,就写一个 x Nil,注意把这个 Nil 写上
package com.atguigu.chapter12
Object Math {
def main(args:Array[string]):Unit={
for(List<-Array(List(1,0),List(88),List(1,0,0))){
val result=List match{
case 0::Nil=>x+“0”//
case X::y::Nil=>x+“”+y//
case 0::tail=>“0...”//
case X::Nil=>x
case _=“something else”
}
//1.0
//2.1 0
//3.0...
//4.something else
println(result)
}
}
匹配列表的功能很强大,到匹配列表用到的是很多的。