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学习---连接数据库操作

    Java连接Oracle数据库 package com.ftl.mysql; import java.sql.Connection; import java.sql.DriverManager; im ...

  2. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  3. Spring boot整合Swagger

    本文github位置:https://github.com/WillVi/springboot-swagger2-demo 环境准备 JDK版本:1.8 Spring boot版本:1.5.16 Sw ...

  4. POJ | Boolean Expressions

    总时间限制: 1000ms  内存限制: 65536kB 描述The objective of the program you are going to produce is to evaluate ...

  5. Chapter 3 Top 10 List

    3.1 Introduction Given a set of (key-as-string, value-as-integer) pairs, then finding a Top-N ( wher ...

  6. ubuntu 14.04 安装boost 1.53

    安装依赖 $ sudo apt-get install mpi-default-dev $ sudo apt-get install libicu-dev $ sudo apt-get install ...

  7. 中间人攻击利用框架bettercap测试

    0x00前言 上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap 0x01简介 bettercap可用来实现各种中间人攻击,模块化,便携.易扩展 0x02特点 提到中间人攻击,最知名 ...

  8. 消息中间件--"rocketmq"02之QuickStart

    依赖 <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq ...

  9. 1878. [SDOI2009]HH的项链【线段树 或 莫队】

    Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此他的项链变得 ...

  10. 【[NOI2011]阿狸的打字机】

    首先发现这个插入的非常有特点,我们可以直接利用这个特殊的性质在\(Trie\)树上模拟指针的进退 之后得到了\(Trie\)树,先无脑建出\(AC\)机 之后考虑一下如何写暴力 最简单的暴力对于每一个 ...