模式匹配

样本类和模式匹配

独自空忆成欢 提交于 2019-11-27 18:57:35
一:样本类就是使用case关键字声明的类,和普通类的用法都一致。 package 样本类和模式匹配 /** * @Author:Alex_lei * @Description: */ object Case_class { /** * people就是样本类 * @param name 名字属性 * @param age 年龄属性 */ case class people(name:String,age:Int) def main(args: Array[String]): Unit = { val p1 = people("alex",23) val p2 = people("Lily",22) println(p1) } } 二:模式匹配   模式分为:通配符,常量模式,变量模式,构造器模式,序列模式,元组模式,类型模式。   代码示例:    package 样本类和模式匹配 import math.{E, Pi} /** * @Author:Alex_lei * @Description: 几种模式的种类 */ object Mode { case class people(name:String,age:Int) def main(args: Array[String]): Unit = { /** * 测试通配符 */ catch_all(3) println

第3节 Scala中的模式匹配:1 - 5

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 18:50:14
7. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句、类型检查等。并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。 7.1. 匹配字符串 package cn.itcast.cases import scala.util.Random object CaseDemo01 extends App{ val arr = Array("hadoop", "zookeeper", "spark") val name = arr(Random.nextInt(arr.length)) name match { case "hadoop" => println("大数据分布式存储和计算框架...") case "zookeeper" => println("大数据分布式协调服务框架...") case "spark" => println("大数据分布式内存计算框架...") case _ => println("我不认识你...") } } 7.2. 匹配类型 package cn.itcast.cases import scala.util.Random object CaseDemo01 extends App{ val arr = Array("hello", 1, 2.0, CaseDemo) val v =

Django路由层

浪尽此生 提交于 2019-11-27 17:48:24
Django的路由系统 Django 1.11版本URLConf官方文档 URL配置(URLconf)就像Django所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 路由增加首页的方式 url(r"^$",views.home) 路由增加尾页的方式(当所有的路径都匹配不上时,给 我返回404提示信息) url(r"",views.error)#放在urls的urlpatterns最后 URLconf配置 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 注意: Django 2.0版本中的路由系统已经替换成下面的写法: from django.urls import path urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/',

关于的字符串的总结:

和自甴很熟 提交于 2019-11-27 16:13:14
字符串: 群: ​ 群是一种只有一个运算的,简单的线性结构,可用来建立许多其他代数系统的一种基本结构. ​ 设G是一个非空集合,a,b,c为它的任意元素.如果对G所定义的一种代数运算"."满足: 封闭性:a.b属于G 结合律:(ab)c=a(bc) 对于G中的任意元素a,b在G中存在唯一一个元素x,y,使得ax=b,ya=b,则称G对于所定义的运算构成一个群. 满足交换律是交换群 子群: ​ 设H是群<G,.>的非空子集,则H是G的子群当且仅当H满足以下条件: 对任意的a,b属于H,a.b也是属于H,a^(-1)属于H; 对任意的a,b属于H,a.b^(-1)属于H; 任何群<G,.>有两个平凡子群:G和e,e是G的幺元. 1.字符串的实现: 1.1基本实现问题和技术: ​ 字符串是字符的线性序列,可以采用线性表的各种实现技术实现,用顺序表或者链接表的形式表示.不论如何表示,实现的基础都是基于顺序存储或链接存储. ​ 考虑字符串的表示时,有两个重要的方面必须确定: 字符串内容的存储(两个极端的存储方式) 1.把一个字符串的全部内容存储在一块连续存储区里 2.把串中的每个字符单独存入一个独立存储块,并将这些块连接在一起. 弊端: 连续存储需要很大的连续空间,极长的字符串可能会带来问题,而一个字符一块存储,需要附带链接域,增大存储开销.实际中可以采用某种中间方式

【Django】路由系统 -- 2019-08-17 07:16:49

﹥>﹥吖頭↗ 提交于 2019-11-27 14:42:53
目录 URLconf配置 正则表达式详解 分组命名匹配 命名URL 与 URL反向解析 原文: http://blog.gqylpy.com/gqy/263 "@ *** 补充 获取项目内的所有URL from django.urls.resolvers import RegexURLPattern from 项目名称 import urls # 与setting.py文件同级的urls文件 def get_all_urls(urlpatterns, prev, is_first=False, result=[]): """获取项目所有的URL""" if is_first: result.clear() for item in urlpatterns: v = item._regex.strip('^$') if isinstance(item, RegexURLPattern): result.append(prev + v) else: self.get_all_urls(item.url_patterns, prev + v) return result # 调用 url_list = self.get_all_urls(urls.urlpatterns, prev='/') Django 1.1版本 URLConf官方文档 URL配置(URLconf

【Django】路由系统 -- 2019-08-17 07:09:37

梦想与她 提交于 2019-11-27 14:42:35
目录 URLconf配置 正则表达式详解 分组命名匹配 命名URL 与 URL反向解析 原文: http://blog.gqylpy.com/gqy/263 "@ *** 补充 获取项目内的所有URL from django.urls.resolvers import RegexURLPattern from 项目名称 import urls # 与setting.py文件同级的urls文件 def get_all_urls(urlpatterns, prev, is_first=False, result=[]): """获取项目所有的URL""" if is_first: result.clear() for item in urlpatterns: v = item._regex.strip('^$') if isinstance(item, RegexURLPattern): result.append(prev + v) else: self.get_all_urls(item.url_patterns, prev + v) return result # 调用 url_list = self.get_all_urls(urls.urlpatterns, prev='/') Django 1.1版本 URLConf官方文档 URL配置(URLconf

Scala 入门笔记 - 模式匹配

帅比萌擦擦* 提交于 2019-11-27 12:51:52
name match { case "aaa" => println("this is aaa") case "bbb" => println("this is bbb") case _ => println("lala") } // 匹配类型 case str: String => .... case int: Int => .... case matchType: MatchType => .... // 匹配自定义类型 // 自定义类型 class MatchType { }// 匹配数组、元组, 集合 val arr = Array(1, 2, 3, 6)arr match { case Array(3, a, b, c) => println(s"case: $a, $b, $c") case Array(_, x, y, z) => println(s"case: $x, $y, $z") case _ => println("no matched")} val tup = ("a", 1, 4)tup match { case ("c", b, 4) => println(s"case: $b") case ("a", x, y) => println(s"case: $x, $y") case _ => println("no matched")} val

python正则表达式

心不动则不痛 提交于 2019-11-27 10:16:23
1. 正则表达式基础 1.1. 简单介绍 正 则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方 法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用 担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.2. 数量词的贪婪模式与非贪婪模式 正 则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪 的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量 词"ab*?",将找到"a"。 1.3. 反斜杠的困扰 与大多数编程语言相同

(转)正则之贪婪与非贪婪模式

爷,独闯天下 提交于 2019-11-27 04:19:14
正则基础之——贪婪与非贪婪模式 分类: 正则基础 2009-11-02 07:51 3500人阅读 评论 (35) 收藏 举报 1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。 属于贪婪模式的量词,也叫做匹配优先量词,包括: “ {m,n} ”、“ {m,} ”、“ ? ”、“ * ”和“ + ”。 在一些使用NFA引擎的语言中,在匹配优先量词后加上“ ? ”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “ {m,n}? ”、“ {m,}? ”、“ ?? ”、“ *? ”和“ +? ”。 从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“ (Expression)+ ”;被忽略优先量词修饰的子表达式使用的就是非贪婪模式,如“ (Expression)+? ”。 对于贪婪模式,各种文档的叫法基本一致,但是对于非贪婪模式,有的叫懒惰模式或惰性模式,有的叫勉强模式,其实叫什么无所谓,只要掌握原理和用法,能够运用自如也就是了。个人习惯使用贪婪与非贪婪的叫法,所以文中都会使用这种叫法进行介绍。 2 贪婪与非贪婪模式匹配原理 对于贪婪与非贪婪模式,可以从应用和原理两个角度进行理解

【Django】路由系统 -- 2019-08-11 19:01:41

不羁岁月 提交于 2019-11-27 00:08:12
目录 URLconf配置 正则表达式详解 分组命名匹配 命名URL 与 URL反向解析 原文: http://106.13.73.98/__/37/ @ *** 补充 获取项目内的所有URL from django.urls.resolvers import RegexURLPattern from 项目名称 import urls # 与setting.py文件同级的urls文件 def get_all_urls(urlpatterns, prev, is_first=False, result=[]): """获取项目所有的URL""" if is_first: result.clear() for item in urlpatterns: v = item._regex.strip('^$') if isinstance(item, RegexURLPattern): result.append(prev + v) else: self.get_all_urls(item.url_patterns, prev + v) return result # 调用 url_list = self.get_all_urls(urls.urlpatterns, prev='/') Django 1.1版本 URLConf官方文档 URL配置(URLconf