For 表达式的模式匹配 | 学习笔记

简介: 快速学习 For 表达式的模式匹配

开发者学堂课程【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 表达式中的模式。

相关文章
|
5月前
|
JavaScript 前端开发 Java
|
5月前
|
编译器 C++
C++系列七:表达式
C++系列七:表达式
|
5月前
Q表达式
Q表达式。
46 5
|
5月前
|
存储 C语言
C 语言——表达式
C 语言——表达式
37 0
|
5月前
|
安全 C++ 开发者
c++表达式详细介绍
前言 表达式是 C++ 语言的基石之一,它们在程序中执行计算、赋值、逻辑判断和更多操作。本文旨在提供对 C++ 表达式各个方面的全面了解,包括基础概念、类型、求值规则以及高级主题。
129 0
|
11月前
|
自然语言处理 Java
Antlr实现任意四则运算表达式求值
上面语法就是四则运算的巴科斯范式定义(EBNF),可能对初学者有点难理解,其实就是一个递归定义,一个表达式可能是有多个子表达式构成,但子表达式的尽头一定是数字。 antlr可以用EBNF所定义的规则,将某个输入串解析为一颗抽象语法树(AST)。我们以表达式((3+3)*(1+4))/(5-3) 为例
161 0
|
C语言
【学习笔记之我要C】求值表达式
【学习笔记之我要C】求值表达式
70 0
|
Python
逻辑判断与正则表达式文本处理
逻辑判断与正则表达式文本处理
125 0
逻辑判断与正则表达式文本处理
|
编译器 C++ 算法
C++程序入门——表达式讲解
C++程序入门——表达式讲解