博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala学习笔记——样本类和模式匹配
阅读量:7048 次
发布时间:2019-06-28

本文共 1287 字,大约阅读时间需要 4 分钟。

1.样本类

在申明的类前面加上一个case修饰符,带有这种修饰符的类被称为样本类(case class)。

被申明为样本类的类的特点:1.会添加和类名一致的工厂方法;2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当做字段维护;3.编译器被这个样本类添加了toString、hashcode、equals方法的实现;4.支持了模式匹配

 

2.模式匹配

一个模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式,它们将在模式匹配过程中被计算。

其中箭头符号=>隔开了模式和表达式。

package com.scala.first/**  * Created by common on 17-4-19.  */object CaseClass {  def main(args: Array[String]): Unit = {    println(cal("+"))    prtList(List(0, 1))    println(prtType("abc"))    println(prtType(Map(1 -> 1)))  }  def cal(exp: String): Int = {    val add = "+"    val result = 1    exp match {      case "+" => result + 2 //常量模式仅仅匹配自身      case "-" => result - 2      case "*" => result * 2      case "/" => result / 2      case add => result + 2 //变量模式可以匹配任意对象      case _ => result //通配模式匹配任意对象    }  }  //序列模式  def prtList(list: List[Int]) = list match {    case List(0, _, _) => println("this is a list") //序列模式,可以匹配List或者Array    case List(1, _*) => println("this is a list, too") //匹配一个不指定长度的序列    case _ => println("other")  }  //元组模式  def prtTuple(tup: Any) = tup match {    case (0, _, _) => println("this is a tuple") //元组模式    case _ => println("other")  }  //类型模式,可以用在类型测试和类型转换  def prtType(x: Any) = x match {    case s: String => s.length    case m: Map[_, _] => m.size    case _ => 1  }}

 

转载地址:http://ajdol.baihongyu.com/

你可能感兴趣的文章
优秀的开源系统恢复软件
查看>>
《网页设计与前端开发 Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript 从入门到精通》——2.3 HTML头部标记head...
查看>>
《Adobe Flash CS6中文版经典教程》——1.11 保存影片
查看>>
Java核心技术卷I基础知识3.6.3 不可变字符串
查看>>
《大数据导论》一2.3 业务流程管理
查看>>
Nitrux 图标主题与 Faenza 一样的设计 – 漂亮
查看>>
Oracle Data Integrator 12c 安装(ODI安装)
查看>>
MySQL的权限排序问题
查看>>
【百川云栖分享】承渊:助力移动App从0到N—— 解读阿里百川移动开放平台
查看>>
访问云数据库HBase版的WebUI
查看>>
【云栖大会】阿里云唐洪:飞天,向世界要一个答案
查看>>
浅析Struts1和Struts2的Action线程安全问题
查看>>
OpenCV Mat —— 基本的图像容器
查看>>
JAXB -java<->xml
查看>>
数据结构实践项目——排序
查看>>
《C语言及程序设计》实践参考——循环的嵌套流程图
查看>>
物联网与互联网,云计算,大数据的互联结合产生超凡的应用
查看>>
【阿里招聘】那年,差点被阿里面试官掰弯
查看>>
C# 调用存储过程
查看>>
MySQL 5.7.6: Make InnoDB fill factor settable
查看>>