匹配列表 | 学习笔记

简介: 快速学习匹配列表

开发者学堂课程【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

image.png

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)

}

}

匹配列表的功能很强大,到匹配列表用到的是很多的。

相关文章
|
数据采集 开发者
Python应用专题 | 17:根据子字符列表过滤掉给定列表
根据子字符列表过滤掉给定列表,从而实现数据的筛查或者去除
|
人工智能 自然语言处理 机器人
匹配问答|学习笔记
快速学习匹配问答
141 0
匹配问答|学习笔记
|
Scala 开发者
匹配元组 | 学习笔记
快速学习匹配元组
匹配元组 | 学习笔记
|
Scala 开发者
匹配数组 | 学习笔记
快速学习匹配数组
匹配数组 | 学习笔记
|
Scala 开发者
对象匹配的应用案例 | 学习笔记
快速学习对象匹配的应用案例
|
关系型数据库 MySQL 索引
B+树索引使用(7)匹配列前缀,匹配值范围(十九)
B+树索引使用(7)匹配列前缀,匹配值范围(十九)
正则匹配指定字符之间的内容,并替换(多个匹配替换)
var str="是吗@Test1:我觉得你说的很对@Test:学无止境"; var r=str.match(/@.*?:/ig); for (var index = 0; index < r.
2419 0