object MatchDemo {
/**
* 定义偏函数用PartialFunction来表示
* PartialFunction[T1,T2]要求传入一个参数T1,T2代表返回的类型。
* 偏函数体中的case只会执行一个,如果匹配到了就不会继续往下匹配
*/
val func: PartialFunction[String, Int] = {
case "a" => 1
case "b" => 2
case _ => -1
} /**
* 匹配字符串
*/
def m1(str: String) = str match {
case "a" => 1
case "b" => 2
case _ => -1
} /**
* 匹配类型
*/
def m2(x: Any) = x match {
// 匹配字符串
case x: String => println(x)
// 带if守卫条件的匹配
case x: Int if x > 5 => println(x)
case _ => println("unknonw")
} /**
* 匹配数组
*/
def m3(arr: Array[Int]) = arr match {
case Array(1, x, y) => println("匹配以1开头,有三个元素的数组")
case Array(0) => println("匹配只有0这个元素的数组")
case Array(0, _*) => println("匹配以0开头,任意多个元素的数组")
case _ => ("unknown")
} /**
* 匹配序列 List
*/
def m4(list: List[Int]) = list match {
case 5 :: Nil => println("匹配只有5这个元素的序列")
case x :: y :: Nil => println("匹配只有两个元素的序列")
case x :: tail => println("匹配任意多个元素的序列")
case _ => println("unknown")
} /**
* 匹配元组
*/
def m5(tuple: Any) = tuple match {
case (x, z, 7) => println("匹配有三个元素并且以7结尾的元组")
case (2, x, y) => println("匹配以2开头有三个元素的元组")
case _ => println("unknown")
} def main(args: Array[String]): Unit = {
println(func("c"))
println(m1("a"))
m2(6)
m3(Array(0, 1, 2, 3, 4, 5, 6))
m4(List(5, 6, 7)) }
}

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实例---简单的宠物管理系统

    代码分析 Cat.java package com.ftl.petshop; class Cat implements Pet { private String name; private Strin ...

  2. Java自学之路(新手一定要看)

    Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...

  3. 前端——实用UI组件库

    Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https://valor-software.com/ngx-bootstrap/#/ github: h ...

  4. nRF5 SDK for Mesh( 七 ) BLE MESH 的 架构(rchitecture)

    The mesh architecture   The mesh stack consists of a number of subsystems that are interfaced throug ...

  5. vue04-动画、组件

    一.vue中使用动画 文档:https://cn.vuejs.org/v2/guide/transitions.html 1. Vue 中的过渡动画 <!DOCTYPE html> < ...

  6. Spring异步-@Async注解

    Spring异步:@Async注解 使用@Async前需要开启异步支持:@EnableAsync 注解和XML方式 @Async返回值的调用:需要使用Future包装 1.如果没有使用Future包装 ...

  7. position+left+bottom+top+right

    今天才知道原来position加上上下左右可以控制的到div的宽度的 比如我现在有一个需要 这样一个需求 现在是红色部分50px 但是你可能不知道剩下的蓝色部分的高度是多少 蓝色部分要怎么填满剩余的高 ...

  8. Python 学习笔记(十四)Python类(一)

    基本概念 问题空间:问题空间是问题解决者对一个问题所达到的全部认识状态,它是由问题解决者利用问题所包含的信息和已贮存的信息主动的地构成的. 初始状态:一开始时的不完全的信息或令人不满意的状况: 目标状 ...

  9. vue进入/离开 & 列表过渡transition

    一.transition过渡 1.需求1(优化):想要一种效果,想要ios那种页面切换效果,总而言之就是过渡效果. 附上官网介绍地址:https://cn.vuejs.org/v2/guide/tra ...

  10. Docker permission denied

    Issue: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/ ...