1. object MatchDemo {
  2. /**
  3. * 定义偏函数用PartialFunction来表示
  4. * PartialFunction[T1,T2]要求传入一个参数T1,T2代表返回的类型。
  5. * 偏函数体中的case只会执行一个,如果匹配到了就不会继续往下匹配
  6. */
  7. val func: PartialFunction[String, Int] = {
  8. case "a" => 1
  9. case "b" => 2
  10. case _ => -1
  11. }
  12.  
  13. /**
  14. * 匹配字符串
  15. */
  16. def m1(str: String) = str match {
  17. case "a" => 1
  18. case "b" => 2
  19. case _ => -1
  20. }
  21.  
  22. /**
  23. * 匹配类型
  24. */
  25. def m2(x: Any) = x match {
  26. // 匹配字符串
  27. case x: String => println(x)
  28. // 带if守卫条件的匹配
  29. case x: Int if x > 5 => println(x)
  30. case _ => println("unknonw")
  31. }
  32.  
  33. /**
  34. * 匹配数组
  35. */
  36. def m3(arr: Array[Int]) = arr match {
  37. case Array(1, x, y) => println("匹配以1开头,有三个元素的数组")
  38. case Array(0) => println("匹配只有0这个元素的数组")
  39. case Array(0, _*) => println("匹配以0开头,任意多个元素的数组")
  40. case _ => ("unknown")
  41. }
  42.  
  43. /**
  44. * 匹配序列 List
  45. */
  46. def m4(list: List[Int]) = list match {
  47. case 5 :: Nil => println("匹配只有5这个元素的序列")
  48. case x :: y :: Nil => println("匹配只有两个元素的序列")
  49. case x :: tail => println("匹配任意多个元素的序列")
  50. case _ => println("unknown")
  51. }
  52.  
  53. /**
  54. * 匹配元组
  55. */
  56. def m5(tuple: Any) = tuple match {
  57. case (x, z, 7) => println("匹配有三个元素并且以7结尾的元组")
  58. case (2, x, y) => println("匹配以2开头有三个元素的元组")
  59. case _ => println("unknown")
  60. }
  61.  
  62. def main(args: Array[String]): Unit = {
  63. println(func("c"))
  64. println(m1("a"))
  65. m2(6)
  66. m3(Array(0, 1, 2, 3, 4, 5, 6))
  67. m4(List(5, 6, 7))
  68.  
  69. }
  70. }

scala (8) 模糊匹配的更多相关文章

  1. 1035-Spell checker(模糊匹配)

    一,题意: 给出一组字典的单词,以'#'结束,之后给出一组要执行模糊匹配的单词序列,以'#'结束 1,若某个单词能在字典中找到,则输出corret 2,若某个单词能通过 变换 或 删除 或 添加一个字 ...

  2. sql模糊匹配中%、_的处理

    防sql注入之模糊匹配中%._处理: StringBuilder sbSql = new StringBuilder(); sbSql.Append(@"SELECT * from tabl ...

  3. 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序

    简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...

  4. 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]

    本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是  EasyUI 1.3.2版本的,项目是ASP.NET MVC3,但是本篇讲解用不上ASP.NET MVC,仅仅修改官方Demo你就知道怎 ...

  5. Mysql 模糊匹配和转义字符

    首先创建一个测试表: insert into test(tt) values('\\\\172.18.28.153'); 现在我想使用模糊匹配,查出以 “\\172” 开头的字符串. 需要使用like ...

  6. grep是模糊匹配

    1. 我:我用的ps -nat|grep -i "80"|wc -l命令 我:解释详细点,,龙哥,对于我这种菜鸟:也是模糊匹配 :你用 grep "80" 会匹 ...

  7. ExtJs combobox支持模糊匹配

    其实很简单,我们只需要在创建下拉框时,给下拉框添加一个监听事件,代码如下:   //以下监听事件用于对下拉项进行模糊匹配                     ,listeners:{       ...

  8. Jquery 模糊匹配ID

    [属性名称] 匹配包含给定属性的元素[att=value] 匹配包含给定属性的元素 (大小写区分)[att*=value] 模糊匹配[att!=value] 不能是这个值[att$=value] 结尾 ...

  9. jQuery选择器模糊匹配

    <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&quo ...

随机推荐

  1. Java学习---多线程的学习

    基础知识 每个正在系统上运行的程序都是一个进程(process).每个进程包含一到多个线程(thread).进程也可能是整个程序或者是部分程序的动态执行. 线程是一组指令的集合,或者是程序的特殊段,它 ...

  2. 通过Windows Server 2008 R2建立iSCSI存储

    名词解释:iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能够在诸如高速千兆以太网上 ...

  3. Asp.Net MVC Identity 2.2.1 使用技巧(五)

    创建用户管理相关视图 1.添加视图 打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出 ...

  4. 利用python查看电脑系统信息

    #查看python默认编码格式 >>> import sys >>> print sys.getdefaultencoding() #python 2.x 默认编码 ...

  5. Linux命令--目录处理

    ls命令 Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录). 语法 ls [-alrtAFR] [name...] 参数 : -a 显示所有文件及目录 (ls内定 ...

  6. c++计算器后续(5)

    自娱自乐: 大概是重新开始玩qt,然后MFC和第四步附加的作业大概不会去玩了.以上. QT相关: 阶段一: 原来作业里举了qt和mfc这两个做界面的东西,网上都说qt容易上手,学了mfc再来看qt简直 ...

  7. Linux服务器磁盘空间占满问题

    下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望碰到此类问题的人能带来帮助.   今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件 ...

  8. JavaScript设计模式之设计原则

    何为设计 即按照哪一种思路或者标准来实现功能,功能相同,可以有不同的设计方案来实现 伴随着需求的增加,设计的作用就会体现出来,一般的APP每天都在变化,更新很快,需求不断在增加,如果设计的不好,后面很 ...

  9. FireFox新标签页打开搜索和书签

    FireFox更新,发现界面完全不适应,虽然他是越做越丑,但是也没办法,一直用FireFox,许多书签,保存的密码现在都记不住了,只能靠保存的自动填充.... 进入正题,FireFox更新了之后,搜索 ...

  10. 【bootstrap】.container与.container_fluid

    .container与.container_fluid是bootstrap中的两种不同类型的外层容器,区别是: .container 类用于固定宽度并支持响应式布局的容器.不用你自己设宽度,通过< ...