Scala是没有Java中的switch case语法的,相对应地,scala提供了更加强大的match case 语法,即模式piper,类替代switch case,match case也被称为模式匹配。

Scala的matach case与Java的switch case最大的不同点在于,java的switch case仅能匹配变量的值,比如1,2,3等;而scala的match case可以匹配各种情况,比如变量的类型、集合的元素、有值或无值。

Match case 的语法如下:

如果值为_下划线,则代表了不满足以上所有情况下的默认情况下如何处理。此外,match case中,只要一个case分支满足并处理了,就不会继续判断下一个case分支了,这点与Java不同,Java的switch case需要用break阻止。

Matach case语法最基本的应用,就是对变量的值进行模式匹配。

【案例:成绩评级】

在模式匹配中使用if守卫:scala的模式匹配语法,有一个特点在于,可以在Case后的条件判断中,不仅仅只是提供一个值,而是可以在值后面再加一个if守卫,进行双重过滤。

【案例:成绩评级(升级版)】

Case类知识常规类,默认情况下是不可变的,可以通过模式匹配分解。

它使用相等equal方法在结构上比较实例,不使用new关键字实例化对象。

默认情况下,case类中列出的所有参数默认使用public和immutable修饰符

【语法】

【scala case类实例】

将上面的代码保存到源文件Demo.scala中,使用以下命令变异并执行代码。

Case类支持模式匹配。所以,可以在模式中使用它。以下是Case类和模式的示例:

【Scala Case类和模式匹配示例】

没有参数的case类将被声明为case对象而不是case类。默认情况下,case对象是可序列化的。

将上面的代码保存到源文件Demo.scala中,使用以下命令编译并执行代码:

Scala中提供了一种特殊的类,用case class进行声明,中文也可以称作样例类。Case class其实有点类似于Java中的Javabean的概念。即只定义field,并且由scala编译时自动提供getter和setter方法,但是没有method.

Case class的主构造函数接收的参数通常不需要使用var或val修饰,scala自动就会使用val修饰,但是如果你自己使用var修饰,那么还是会按照var来定义。

Scala自动为case class定义了伴生对象,也就是object,并且定义了apply()方法,该方法接收主构造函数中相同的参数,并返回case class对象。

【案例:学校门禁】

Scala Case类和对象相关推荐

  1. Scala的类和对象

    Scala的类和对象 概念 定义类 基本语法 案例实操 属性 基本语法 案例实操 创建对象 基本语法 案例实操 概念 类:可以看成一个模板 对象:表示具体的事物 定义类 基本语法 [修饰符] clas ...

  2. Scala学习之路 (六)Scala的类、对象、继承、特质

    一.类 1.类的定义 scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员 这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员 ...

  3. scala学习-类与对象

    类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: 1 class Counter{ 2 private var va ...

  4. Scala学习 day01 Scala的类/方法/对象/单例对象

    从今天开始,我将尽自己最大努力系统地学习Scala这门语言,希望自己能够坚持下去. Scala中的类 定义规则 class ClassName{//类中的成员 }在类定义里,可以放置字段和方法,这些被 ...

  5. Scala基础教程(七):类和对象、特征

    扩展一个类: 可以扩展scala类以类似的方式,如在Java中的一样,但有两个限制:方法重载需要override关键字,只有主构造可以传递参数给基构造.现在扩展上面的类,并增加一个类的方法: clas ...

  6. 快学Scala学习笔记及习题解答(5-8类、对象、包和继承)

    本文scala使用的版本是2.11.7 第五章 类 5.1 基本操作 class Person {// Scala会生成一个私有的final字段和一个getter方法,但没有setterval tim ...

  7. 【scala】类的定义和单例对象

    一.类的定义 Scala类的定义跟JAVA中类的定义基本是一样的. 示例 class ChecksumAccumulator{var sum = 0;//Scala默认关键字为publicprivat ...

  8. 《Scala By Examples》第6章 类和对象

    先定义了一个"有理数"(rational)类: package ch6_classes_and_objects/*** 以Class的形式定义一个有理数的类型*/ class Ra ...

  9. Scala 类和对象详解

    Scala 类和对象 类是对象的抽象,而对象是类的具体实例.类是抽象的,不占用内存,而对象是具体的,占用存储空间.类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板. 我 ...

最新文章

  1. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE
  2. 深度丨2018年AI依然要面临解决的的5大技术难题
  3. Java学习笔记(二)--Java开发环境
  4. Flex手机开发-退出应用程序
  5. JavaScript异步基础
  6. 数据挖掘学习日志(part1)--熵值法
  7. zznu 1996 : 正三角形和圆的爱情
  8. 使用useEffect常见问题!
  9. 软件测试都需要哪些工具呢?一文带你看清
  10. Keyboard Control
  11. 根据select的内容来批量修改一个表的字段
  12. 应届毕业生的户口、档案、三方协议、报到证、见习期、工龄计算、转正定级等重要知识普及!
  13. Android解析短视频无水印链接(精)抖音/快手/微视
  14. [车联网安全自学篇] Android安全之Android中常用权限手册「必备」
  15. 医学图象存储、检索和显示的新技术及新动向
  16. oracle查看所有表信息和字段信息以及注释信息等
  17. gdb x命令_Coresight及GDB使用介绍 - 大海在倾听
  18. 理论力学中的 动量定理、动量矩定理、动能定理
  19. 【FFmpeg学习】H264 视频码流分析
  20. 安卓Android下如何开发USB NFC读写器APP

热门文章

  1. 网易云信联合墨刀,邀你参加【产品设计狂欢节】!
  2. 魔兽嘉年华,云信四大码魔与你不见不散
  3. 【动态规划】爱与愁的心痛
  4. Apache(httpd)配置--防盗链配置和访问控制
  5. NPoco for MySQL 配置
  6. MBaen+Timer=减少数据库调用
  7. 输出联系变化的数字seq
  8. vc 国际化的资源文件处理
  9. 50句看后可以变换心情豁然开朗的话
  10. Microsoft SQL Server 2005 安装程序错误解疑