13、scala模式匹配
1、模式匹配的基础语法
2、对类型进行模式匹配
3、对Array和List的元素进行模式匹配
4、case class与模式匹配
5、Option与模式匹配
1、模式匹配的基础语法
Scala提供了match case语法,即模式匹配。替代java的switch case。
两者不同,java中switch case仅能匹配变量的值,比如1、2、3等;scala中的match case可以匹配各种类型,比如变量的类型、集合的元素、有值或无值。
Match case语法:变量 match{ case 值=>语法}。如果值为下划线,代表了不满足以上所有情况下的默认情况如何处理。此外,match case中,主要一个case分支满足并处理了,就不会继续判断下一个case分支了。Java需要用break阻止。
案例成绩评价:
模式匹配中使用if守卫:在case后面的条件中,可以在值后面加一个if守卫,进行双重过滤。
在模式匹配中进行赋值:Scala中,可以将模式匹配的默认情况,下划线替换为一个变量名,此时模式匹配会将要匹配的值赋值给这个变量,从而可以在后面的处理语句中使用要匹配的值。(目的是拿到最后一个case _ 的值)
2、对类型进行模式匹配
scala中,模式匹配可以直接匹配类型,而不是值,java的swich case绝对做不到。
3、对Array和List的元素进行模式匹配
对Array进行模式匹配,分别可以匹配带有指定元素的数组、带有指定个数的数组、以某元素打头的数组,对LIst进行模式匹配,与Array类似,但需要使用List特有的::操作符。对朋友打招呼实例:
4、case class与模式匹配
case class类,中文也称为样例类,类似java的JavaBean的概念。即只定义field,并由scala编译时自动提供getter和setter方法,但是没有method。
case class的主构造函数接受的参数通常不需要使用var或val修饰,Scala自动会使用val修饰。(如果指定var修饰,还是会按照var来)。
scala自动为case class定义了伴生对象,并且定义了apply()方法,该方法接受主构造函数相同的参数,并返回case class对象。
5、Option与模式匹配
Scala中有一种特殊的类型,叫做Option。Option有两种值,一种是Some,表示有值,一种是None,表示没有值。
Option通常会用于模式匹配中,用于判断某个变量是有值还是无值,比null更加简洁明了。
13、scala模式匹配的更多相关文章
- Scala模式匹配和类型系统
1.模式匹配比java中的switch case强大很多,除了值,类型,集合等进行匹配,最常见的Case class进行匹配,Master.scala有大量的模式匹配. Case "_&qu ...
- scala模式匹配的使用
Scala模式匹配 Tip1:模式总是从上往下匹配,如果匹配不到则匹配case_项(类似Java中的default) Tip2:与Java和C语言不同,不需要在每个分支末尾使用break语句退出(不会 ...
- scala模式匹配详细解析
一.scala模式匹配(pattern matching) pattern matching可以说是scala中十分强大的一个语言特性,当然这不是scala独有的,但这不妨碍它成为scala的语言的一 ...
- Spark记录-Scala模式匹配
Scala模式匹配 模式匹配是Scala函数值和闭包后第二大应用功能.Scala为模式匹配提供了极大的支持,处理消息. 模式匹配包括一系列备选项,每个替代项以关键字大小写为单位.每个替代方案包括一个模 ...
- Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏
package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popu ...
- 强大的Scala模式匹配
用过Scala的模式匹配,感觉Java的弱爆了.Scala几乎可以匹配任何数据类型,如果默认的不能满足你的要求,你可以自定义模式匹配. 介绍Scala的模式匹配前,我们先了解清楚unapply()与u ...
- 13. Scala函数式编程(高级部分)
13.1 偏函数(partial function) 13.1.1 需求 -> 思考 一个集合val list = List(1,2,3,4,"abc"),完成如下要求 1) ...
- 12. Scala模式匹配
12.1 match 12.1.1 基本介绍 Scala中的模式匹配类似于Java中的switch语法,但是更加强大 模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需 ...
- scala模式匹配与样例类
样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定.如下: 1.添加与类名一致的工厂方法.也就是说,可以写成Var("x") ...
随机推荐
- PHP rand()和mt_rand()的区别
rand()和mt_rand()作用都是产生一个随机整数,都有两种使用形式: 1.int rand(void) / int mt_rand(void) 2.int rand(int $min, int ...
- Maven奇怪的问题,当找不到Maven输出的提示错误时可以试下这个方法
Maven有时会输出一些奇怪的错误,尤其是用Eclipse自动下载的包,然后根据提示的错误在网上找不到时,可以试下直接删除.m2文件夹,即本地仓库.然后再重新在控制台下执行打包命令来下载包.
- mybatis中jdbcType的作用和是否必须
1. mybatis中 jdbcType 时间类型 当jdbcType = DATE 时, 只传入了 年月日 jdbcType = TIMESTAMP , 年月日+ 时分秒 2. jdbcType ...
- PHP array_multisort()
定义和用法 array_multisort() 函数对多个数组或多维数组进行排序. 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排 ...
- ES6 一些常用使用
//1.解构数组 let arr1 = ['apple', 'coffee', 'cake']; let [fruit, drink, dessert] = arr1; console.log(fru ...
- 常用的java方法,为程序添点小功能
一.生成随机数 Random类使用示例 使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字.以下生成随机数的代码均使用以下Random对象r进行生成: Rand ...
- 怎么让frameset出现整体滚动条
a.html<!DOCTYPE html> <html> <head> <title></title> </head> < ...
- [HNOI2011]XOR与路径
https://zybuluo.com/mdeditor#1094266 标签(空格分隔): 高斯消元 期望 题面 从 1 号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下 ...
- Datatable转换为Json 的方法
/// <summary> /// Datatable转换为Json /// </summary> /// <param n ...
- PCB SQL SERVER 正则应用实例
我们用过SQL SERVER的都知道,SQL SERVER它本身是不自带正则表达式的,因为没有,所以基本都没用过啊, 但我们在C#中对文本匹配用正则的方式处理非常好用,省得你写一堆代码实现匹配,多简洁 ...