开发者学堂课程【Scala 核心编程 - 进阶:For 表达式的模式匹配】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9079
For 表达式的模式匹配
For 表达式的模式匹配
基本介绍
for循环也可以进行模式匹配.
应用案例
val map = Map("A"->1,"B"->0, "C"->3)
for ( (k, v) <-map ) {
printIn(k + " ->"+ v)
}
//说明
for ((k,0) <- map){
println(k + " --> " +0)
}
//说明
for ((k, v)<- map if v == 0)
{printin(k + " --->" + v)
}
写一个 map,每次循环或者遍历时将它的 key 和 value 放在(k,v)
假如 map 遍历时想要进行一个筛选,筛选值为0输出:
for ((k,0) <- map)表示在进行map遍历时只将值为0的遍历出,其他过滤掉,上述代码中只能拿到B,A会被过滤掉
for ((k, v)<- map if v == 0)表示在map遍历时只有在遍历出的v刚好等于0时才能执行下一条语句。
演示:
新建一个 Scala Class名为MatchForDemo,选择 object。
完整代码如下:
package com.atguigu.chapter12
object MatchForDemo {
def main(args:Array[String]:Unit) = {
val map = Map(“A”->1,”B”->0,”C”->3)
for ( (k, v) <-map ) {
printIn(k + " ->"+ v) //出来三个key-value (“A”->1),(“B”->0),(“C”->3)
}
//说明:只遍历出 value=0 的key-value,其他的过滤掉
for ((k,0) <- map){
println(k + " --> " +0)
}
//说明,这个就是上面代码的另外写法,只是下面的用法更加灵活和强大
for ((k, v)<- map if v == 0){
printin(k + " --->" + v)
}
}
}
为了验证第一种方式是否出来三个key-value,先来注释掉下面代码,运行结果显示:
A -> 1
B -> 0
C -> 3
再来看第二种方式,为了运行效果,在for ((k,0) <- map)代码上添加
println(“-----------(k,0) <- map-------------------------”)
运行结果显示:
B --> 0
只拿到B
再来看第三种方式,if后可以添加条件范围,不一定为定值。为了运行效果,在for ((k, v)<- map if v == 0)代码上添加
println(“-----------(k, v)<- map if v == 0)-----------------------”)
运行结果显示
B --> 0
如果修改条件为(k, v)<- map if v >=1)
运行结果显示
A --> 1
C --> 3
以上就是 for 表达式中的模式。