scala (8) 模糊匹配
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) 模糊匹配的更多相关文章
- 1035-Spell checker(模糊匹配)
一,题意: 给出一组字典的单词,以'#'结束,之后给出一组要执行模糊匹配的单词序列,以'#'结束 1,若某个单词能在字典中找到,则输出corret 2,若某个单词能通过 变换 或 删除 或 添加一个字 ...
- sql模糊匹配中%、_的处理
防sql注入之模糊匹配中%._处理: StringBuilder sbSql = new StringBuilder(); sbSql.Append(@"SELECT * from tabl ...
- 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序
简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...
- 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是 EasyUI 1.3.2版本的,项目是ASP.NET MVC3,但是本篇讲解用不上ASP.NET MVC,仅仅修改官方Demo你就知道怎 ...
- Mysql 模糊匹配和转义字符
首先创建一个测试表: insert into test(tt) values('\\\\172.18.28.153'); 现在我想使用模糊匹配,查出以 “\\172” 开头的字符串. 需要使用like ...
- grep是模糊匹配
1. 我:我用的ps -nat|grep -i "80"|wc -l命令 我:解释详细点,,龙哥,对于我这种菜鸟:也是模糊匹配 :你用 grep "80" 会匹 ...
- ExtJs combobox支持模糊匹配
其实很简单,我们只需要在创建下拉框时,给下拉框添加一个监听事件,代码如下: //以下监听事件用于对下拉项进行模糊匹配 ,listeners:{ ...
- Jquery 模糊匹配ID
[属性名称] 匹配包含给定属性的元素[att=value] 匹配包含给定属性的元素 (大小写区分)[att*=value] 模糊匹配[att!=value] 不能是这个值[att$=value] 结尾 ...
- jQuery选择器模糊匹配
<html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&quo ...
随机推荐
- Python学习---django多对多之Djanog默认表学习
案例一: from django.db import models class Book(models.Model): name = models.CharField(max_length=33) # ...
- December 13th 2016 Week 51st Tuesday
Life is a sail trip full of chances and challenges. 人生的旅途中充满了机遇和挑战. A boat sails on the sea, the vas ...
- [EffectiveC++]item3:尽可能使用const
将某些东西声明为const可以帮助编译器检测出错误用法,const 编译器强制实施bitwise constness,但是你code的时候应该使用“概念上的常量性” 当const和non-const成 ...
- 低版本兼容使用Fragment (转)
Fragment框架开发东西确实很方便,但是恼人的是从4.0才开始支持.以前的版本必须用兼容模式开发,本人在网上找了大量资料,终于找到些线索正常运行于2.1版本的安卓系统.现在浅说一下兼容版本使用Fr ...
- [Assignment] C++2
作业要求:PAT1025 翻转链表 代码在这里
- 记录c++本地文件读取组装
class ErrorCodeConfig{ public: ErrorCodeConfig(){} ErrorCodeConfig(const ErrorCodeConfig&)=delet ...
- js判断鼠标滚轴方向(向上或向下)
var num=1; $(document).on("mousewheel DOMMouseScroll", function (e) { var delta = (e.origi ...
- 线性回归 Python实现
import numpy as np import pylab def plot_data(data, b, m): x = data[:, 0] y = data[:, 1] y_predict = ...
- 2019.3.25 IDEA控制台乱码解决 &&idea关闭代码自动提示
设置Tomcat里面的conf文件夹下的properties结尾的文件
- 多条件查询接收很多参数的时候要用Map接收。
好处是,以后修改查询条件的时候不用从接口,到实现类,到controller的参数都要修改, 假如加一个查询条件,只需要前端多传一个参数值,都用map<>键值对接收,只需要在 service ...