option模式匹配:

 var map1=Map("abc"->5,"eee"->6)
var x=map1.get("abc")
x match {
case Some(x) => println("Some用来判断值存在"+x)
case None => println("None用来表示值不存在")
}

case  class 模式匹配 :

class A
case class A1(name:String,age:Int) extends A
case class A2(name:String,address:String) extends A def classMatch(c:A){
c match {
case A1(name,age) => println("类型是A1")
case A2(name,address) => println("类型是A2")
case _ => println("类型未知")
}
}

list列表匹配(Nil代表结束,tail代表未知的后续元素):

def  listMatch(list:Any)={
list match {
case e1::e2::Nil => println("list仅有2个元素:"+e1+e2)
case "abc"::"678"::"mmm"::Nil => println("list仅仅包含3个固定元素")
case 0::tail => println("list以0开头包含"+(list.asInstanceOf[List[Int]]).length+"个元素")
case 0::Nil => println("这个list仅仅包含0")
case _ => println("没有匹配")
}
}

数组模式匹配:

def  arrayMatch(arr:Any)={
arr match {
case Array("abc") => println("only one abc")
case Array("abc",1) => println("两个元素:abc和1")
case Array(a,b) => println("两个动态元素:"+a+"-"+b)
case Array(0,_*) => println("这个array以0开头元素个数不计:"+arr)
case _ => println("没有匹配")
}
}

类型模式匹配:

//传入的参数,但判断类型时实际使用的是isInstanceOf[xxx]
def getNum(item:Any)={
item match{
case x:String => print("String")
case i:Int => print("Int")
case c:Char => print("Char")
case _=>0//这个是完全没有匹配上的情况
}
}

值匹配:

def testMatch(i:Int,s:String="default"):Unit={
i match {
case 1 => print("数字:"+1)
case 2 => print("数字:"+2)
case 3 => print("数字:"+3)
case 5 if(s equals "mz") => print("数字:"+3+"mz")//匹配后仍可添加判断
case tmp1 => print("tmp1的赋值数字:"+tmp1)//会将i赋值给tmp1变量
case _ => print("其它喽")
}
}

最新文章

  1. ubuntu用apt安装apache2时,出现E:未发现软件包 apache2
  2. 使用 CSS3 动画实现的 3D 图片过渡特效
  3. 在VisualStudio2013,2015中如何安装自定义项目模板
  4. [讨论] win7封装时如何直接开通局域网共享
  5. U3D Debug.log的问题
  6. 记事本写JAVA程序
  7. 【转载】Java垃圾回收内存清理相关(虚拟机书第三章),GC日志的理解,CPU时间、墙钟时间的介绍
  8. 李洪强iOS开发之-PCH文件的配置
  9. SPRING IN ACTION 第4版笔记-第四章Aspect-oriented Spring-001-什么是AOP
  10. 【USACO 2.1.5】海明码
  11. Java的重载和重写差别(面试常见)
  12. UICollectionView 适配 iPhone 7 Plus
  13. python基础之五大标准数据类型
  14. 史考特证券(Scottrade)填写提款申请表的要求以及注意事项
  15. css3 移动端 开关效果
  16. ]Java 5|6 并发包介绍
  17. ceph集群搭建
  18. C# DGVPrinter.cs 打印方法
  19. Liferay7 BPM门户开发之8: Activiti实用问题集合
  20. LeetCode168.Excel表列名称

热门文章

  1. php中static和self的区别
  2. java框架篇---hibernate之缓存机制
  3. 看雪CTF第十五题
  4. [js] 处理字符串换行造成的json解析失败
  5. http 请求参数之Query String Parameters、Form Data、Request Payload
  6. 文件加密 解密 pdftk openssl gpg vim
  7. [UI] 01 - CSS
  8. [UI] 05 - Bootstrap: built-in components
  9. 127、Universal-Image-Loader解析(转载)(图片加载)
  10. mysql格式化小数保留小数点后两位(小数点格式化)