内容匹配

import scala.util.Random

object TestMatch {
def main(args: Array[String]): Unit = {
//创建一个Int数组
val array = Array(12, 34, 56, 78)
//随机生成数组中的元素并赋值给常量i
val i = array(Random.nextInt(array.length))
println(array.length) println(i)
//模式匹配,匹配数组中的内容
i match {
case 12 => println("第一名")
case 34 => println("第二名")
case 56 => println("第三名")
case 78 => println("第四名")
case _ => throw new Exception("无匹配项")
}
}
}

类型匹配

import scala.util.Random

object TestMatch2 {
def main(args: Array[String]): Unit = {
//创建一个包含多种类型的数组
val array = Array(11, 55, 88, "zhangsan", "lisi", "wangwu", 3.14, 7.77, true)
//随机生成数组中的元素并赋值给常量value
val value = array(Random.nextInt(array.length)) println(value)
//模式匹配,匹配类型
value match {
// case x : Int => println("元素类型是Int")
case y: String => println("元素类型是String")
case z: Double => println("元素类型是Double")
case a: Boolean => println("元素类型是Boolean") case b: Int if (b > 20) => println("元素类型是Int且不是11") //if(b > 20)称为守卫条件,必须同时满足
case _ => throw new Exception("无匹配项")
}
}
}

s表达式

value match {
// case x : Int => println("元素类型是Int")
case y: String => println(s"提取的值为$y")
case _ => throw new Exception("无匹配项")
}
//s表达式可以让""内的内容全部自动拼接
//如上面,最后输出的结果应该是 提取的值为wangwu

case class 样例类

import scala.util.Random

//样例类是专门用于模式匹配的特殊类,使用关键字case修饰

// case class是普通的样例类,使用时按常理需要new一个对象
case class Submit(taskName:String,taskNum:Int) //需要构造参数列表 // case object是特殊样例类,不需要new
case object Holiday //case object 不需要参数列表 object CaseClassTest {
def main(args: Array[String]): Unit = {
//remove 'new' modifier case class会自动创建伴生对象,提供apply方法,所以一般情况下也不需要new
val array = Array(Holiday, Submit("makeMoney", 888))
val product = array(Random.nextInt(array.length)) product match {
case Holiday => println("放假啦")
case Submit(taskName,taskNum) => println(s"taskName:$taskName,taskNum:$taskNum")
}
}
}

偏函数

object PartialFunctionTest {
//偏函数
val func1: PartialFunction[String, Int] = {
case "one" => 1
case "two" => 2
case "three" => 3
case "four" => 4
case _ => -1
}
//上下两种方法相同
def func2(num: String): Int = num match {
case "one" => 1
case "two" => 2
case _ => -1
} def main(args: Array[String]): Unit = {
println(func1("one"))
println(func2("one"))
}
}

最新文章

  1. .NET面试题系列[11] - IEnumerable<T>的派生类
  2. Oracle 数据库基础学习 (五) 多表查询
  3. 深入HTML5 Web Worker应用实践:多线程编程
  4. hdwiki 编码规范
  5. 安装edX DevStack
  6. IOS优秀博客
  7. JS笔记 入门第一
  8. tomcat 下部署单框架cas时,报出org.apache.jasper.JasperException异常的解决办法
  9. chrome中安装.crx后缀的离线插件
  10. 初学爬虫,关于scrapy
  11. A Simple Problem with Integers(线段树区间更新模板)
  12. 如何用MTR诊断网络问题
  13. Embedded training,嵌入式训练
  14. Web框架本质及第一个Django实例 Web框架
  15. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环
  16. GitHub for Windows简单使用
  17. 'webpack' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  18. YAML的使用
  19. Mac安装appium 问题记录
  20. Python dict() 函数

热门文章

  1. A - Wireless Network POJ - 2236
  2. Rescue BFS+优先队列 杭电1242
  3. Cucumber(4)——jenkins的集成
  4. 详解 File类
  5. 图解Knative核心组件Serving基础设计
  6. pytorch 矩阵数据增加维度unsqueeze和降低维度squeeze
  7. springmvc配置数据源方式
  8. phpspider框架的使用
  9. JavaScript和php数组的定义
  10. beego rel/reverse