scala学习笔记07--样本类(case class)和模式匹配

本文介绍了Scala中的样本类(case class)及其自动添加的方法,如toString、hashCode和equals。同时,详细讲解了模式匹配的概念,包括其与Java switch的区别。文中通过示例展示了如何进行模式匹配,如构造器模式、常量模式、变量模式、序列模式、元组模式和类型模式,并提到了模式守卫的使用。此外,还讨论了Scala中模式匹配的注意事项和最佳实践。
摘要由CSDN通过智能技术生成
样本类:添加了case的类便是样本类。这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定。如下:

    1.添加与类名一致的工厂方法。也就是说,可以写成Var("x")来构造Var对象。
    2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当作字段维护。

    3.编译器为这个类添加了方法toString,hashCode和equals等方法。

模式匹配:

match对应Java里的switch,但是写在选择器表达式之后。即: 选择器 match {备选项}。

  一个模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

  match表达式通过以代码编写的先后次序尝试每个模式来完成计算。类似于UnOp("-" , UnOp("-" , e))这种形式的,是构造器模式匹配。

  match与switch的比较:匹配表达式可以被看作Java风格Switch的泛化。但有三点不同:

  1. match是Scala的表达式,始终以值作为结果;
  2. Scala的备选项表达式永远不会“掉到”下一个case;
  3. 如果没有模式匹配,MatchError异常会被抛出。这意味着必须始终确信所有的情况都考虑到了,或者至少添加一个默认情况什么都不做。如 case _ =>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值