1. package com.ming.test
  2.  
  3. /**
  4. * 模式匹配
  5. */
  6. object MatchTest {
  7.  
  8. def main(args: Array[String]): Unit = {
  9. //match 基本用法
  10. var sign=3
  11. var m='w'
  12. var str='d'
  13. var digit="dsafdsafdsaf"
  14. m match{
  15. case '+' => sign=10
  16. case '-' => sign=100
  17. case _ => sign=200
  18. }
  19. println(sign)
  20. sign=m match{case '+' => 1000;case '-' => 10000;case _ => 1231}
  21. println(sign)
  22.  
  23. //带有守卫的匹配
  24. sign=m match{case '+' => 12;case '-' =>23;case _ if Character.isDigit(m) =>2;case _ => 1000000}
  25. println(sign)
  26. //类型模式
  27. //var a=obj match{case x:Int=>x;case s : String => Integer.parseInt(s);case _:BigInt=>Int.MaxValue;case _ => 0}
  28.  
  29. //数组匹配
  30. var array=Array(0,2)
  31. val s=array match{
  32. case Array(0)=>"0"
  33. case Array(x,y)=>x+" "+ y
  34. case Array(0,_*)=>"0 ......"
  35. case _ =>"something else"
  36. }
  37. println(s)
  38.  
  39. //匹配列表
  40. val list=List(0,212,3)
  41. var lst=list match{
  42. case 0 :: Nil =>"0"
  43. case x :: y ::Nil => x+" "+ y
  44. case 0 :: tail => "0...."
  45. case _ =>"something else"
  46. }
  47. println(lst)
  48.  
  49. //元祖匹配
  50. val yuanzu=(1,2,0)
  51. var zu=yuanzu match{
  52. case (0,_,1) => "0 ..."
  53. case (y,0,0) => y+"0"
  54. case _ => "neither is 0"
  55. }
  56. println(zu)
  57.  
  58. //变量中声明中的模式
  59. val (x,y)=(1,2);
  60. println(x+y)
  61.  
  62. //for 表达式中的模式
  63. for((k,v)<-Map((1,""),(2,3)) if v !="")println(k+"->"+v)
  64.  
  65. }
  66.  
  67. }

scala模式匹配的更多相关文章

  1. scala模式匹配的使用

    Scala模式匹配 Tip1:模式总是从上往下匹配,如果匹配不到则匹配case_项(类似Java中的default) Tip2:与Java和C语言不同,不需要在每个分支末尾使用break语句退出(不会 ...

  2. scala模式匹配详细解析

    一.scala模式匹配(pattern matching) pattern matching可以说是scala中十分强大的一个语言特性,当然这不是scala独有的,但这不妨碍它成为scala的语言的一 ...

  3. Spark记录-Scala模式匹配

    Scala模式匹配 模式匹配是Scala函数值和闭包后第二大应用功能.Scala为模式匹配提供了极大的支持,处理消息. 模式匹配包括一系列备选项,每个替代项以关键字大小写为单位.每个替代方案包括一个模 ...

  4. Scala模式匹配和类型系统

    1.模式匹配比java中的switch case强大很多,除了值,类型,集合等进行匹配,最常见的Case class进行匹配,Master.scala有大量的模式匹配. Case "_&qu ...

  5. scala模式匹配与样例类

    样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定.如下: 1.添加与类名一致的工厂方法.也就是说,可以写成Var("x") ...

  6. Scala模式匹配| 隐式转换

    1. 模式匹配 Scala中的模式匹配类似于Java中的switch语法,但是更加强大.模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分 ...

  7. scala 模式匹配详解 3 模式匹配的核心功能是解构

    http://www.artima.com/scalazine/articles/pattern_matching.html这篇文章是odersky谈scala中的模式匹配的一段对话,我做了部分片段翻 ...

  8. scala 模式匹配详解 2 scala里是怎么实现的?

    在这篇martin和另外两位模式匹配领域专家的论文里说了模式匹配的几种实现方式,以及scala是选择哪种方式来实现的.http://lampwww.epfl.ch/~emir/written/Matc ...

  9. scala 模式匹配详解 1

    什么是模式? 一些刚从java转到scala的同学在开发的过程中犹如深陷沼泽,因为很多的概念或风格不确定,scala里有很多的坑,模式匹配也算一个.我整理了一下自己所理解的概念,以及一些例子.这个系列 ...

  10. Scala模式匹配常用

    今天在工作中遇到的几个小问题,总结一下: 1.因为业务需要调用PHP的接口,获取到的返回体需要做一段逻辑处理,然而某个字段接收到的参数是io.serializable类型,字段的类型不是预期的stri ...

随机推荐

  1. http://blog.csdn.net/fw0124/article/details/48280083

    http://blog.csdn.net/fw0124/article/details/48280083

  2. C#对象的声明与实例化

    在代码中我们经常能看到下面这样的语句. A a = new A();(1) B b = null;(2) C c;(3) 代码( 1 ) 创建 A 的对象并对其进行初始化. A :类: new A() ...

  3. MySQL主从配置问题整理

    前段时间线下数据库需要搭建主从库.由于不想备份数据库,打算直接克隆数据库虚拟机到新的一台,然后配置主从同步.以前没这么干过,所以也没有遇到过什么问题,今天把遇到的问题整理了一下. 192.168.3. ...

  4. 搭建和使用Docker私有仓库

    需要注意的是,从Docker Pool下载的镜像文件,与官方镜像文件是完全一致的. 安装Docker之后,可以是使用官方提供的registry镜像来搭建一套本地私有仓库环境:  docker run  ...

  5. 追加文件内容java

    1.向空文件文件中追加内容(如果原来有内容,则覆盖) FileWriter writer; try { writer = new FileWriter(listFile);//创建字符输出流类对象和已 ...

  6. django中嵌入百度editor插件

    一.安装和配置步骤: 1.先下载百度ueditor插件,并安装pip install DjangoUeditor 2.把下载好的ueditor插件放到自己的项目中 3.配置setting INSTAL ...

  7. awk实现 文本内的换行符 为分隔符,输出变为逗号

    awk实现 文本内的换行符 为分隔符,输出变为逗号 [liujianzuo@ow2 scripts]$ awk -F $ '{print $0}' ldap_member.log ruanshujun ...

  8. [转载]Oracle修改表空间大小

    Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...

  9. box2d.js

    https://github.com/kripken/box2d.js/ Demo: http://kripken.github.io/box2d.js/webgl_demo/box2d.html 演 ...

  10. Simple GDB case

    to be added...   gdb a.out   [Inferior 1 (process 9718) exited with code 05] (gdb) list Line number ...