Scala(六)【模式匹配】】的更多相关文章

Scala的模式匹配是通过match表达式从若干可选项中选择,类似Java中的switch. 例子: val firstArg = if(args.length>0) args(0) else "" firstArg match{ case "salt" => println("pepper"); case "chips" => println("salsa"); case "e…
前言 首先.我们要在一開始强调一件非常重要的事:Scala的模式匹配发生在但绝不仅限于发生在match case语句块中.这是Scala模式匹配之所以重要且实用的一个关键因素!我们会在文章的后半部分具体地讨论这一点. 本文原文出处: http://blog.csdn.net/bluishglc/article/details/51056230 严禁不论什么形式的转载.否则将托付CSDN官方维护权益. 模式匹配的种类 在Scala中一共同拥有例如以下几种类型的模式匹配: 通配符匹配(Wildcar…
目录 一.基本语法 二.匹配固定值 三.守卫 四.匹配类型 五.匹配集合 1.Array 2.List 3.元祖 4.对象和样例类 六.偏函数 七.赋值匹配 八.for循环匹配 一.基本语法 在匹配某个范围的数据,需要在模式匹配中增加条件守卫. 语法 变量 match { case 匹配条件 => 处理逻辑 case 匹配条件 => 处理逻辑 case 匹配条件 => 处理逻辑 case _ => 其他处理 //case x => 其他条件 如果x不在箭头右边使用,则可以用_…
一. scala 模式匹配(pattern matching) pattern matching 可以说是 scala 中十分强大的一个语言特性,当然这不是 scala 独有的,但这不妨碍它成为 scala 的语言的一大利器. scala 的 pattern matching 是类似这样的, e match { case Pattern1 => do Something case Pattern2 if-clause => do others ... } 其中,变量 e 后面接一个 match…
模式匹配的类型 包括: 常量模式 变量模式 构造器模式 序列模式 元组模式 变量绑定模式等. 常量模式匹配 常量模式匹配,就是在模式匹配中匹配常量 objectConstantPattern{ def main(args:Array[String]) :Unit = { //模式匹配结果作为函数返回值 defpatternShow(x : Any) = x match { => "五" case true => "真" case "test&q…
scala模式匹配 1.基础match case(类似java里switch case,但功能强大些) object MatchApp { def main(args: Array[String]): Unit = { val is = Array("a","b","c","d") val i = is(Random.nextInt(is.length))//随机取数组中的一个值 i match { case "a&…
1.概述 2.程序示例(普通的示例) 3.模式匹配(Array) 4.程序示例(Array) 5.模式匹配(List) 6.程序示例 7.遍历 8.模式匹配(case class) 9.程序示例(传统) 10.程序示例(case class) 11.程序示例,模式匹配(匹配类)…
引言 模式匹配是Scala中非常有特色,非常强大的一种功能. 类似于Java中的switch case语法,但是模式匹配的功能要比它强大得多,switch只能对值进行匹配,但是Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配.对Array和List的元素情况进行匹配.对case class进行匹配甚至对有值或没值(Option)进行匹配. 而且在Spark源码中也大量地使用了模式匹配功能.因此为了更好地编写Scala程序,并且更加通畅地看懂Spark源码,学好模式匹配是非常重要…
Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. 匹配实例: def color(num: Int): String = { val colorNum = num val colorStr = colorNum match { case 1 => "red" case 2 => "green" case…
1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只有方法的概念,即寄存和依赖于类与对象中的方法.Java中的方法是绝对不可能脱离类和对象独立存在的. 1.2:Scala是一门既面向对象,又面向过程的语言.因此在Scala中有非常好的面向对象的特性,可以使用Scala来基于面向对象的思想开发大型复杂的系统和工程,而且Scala也面向过程,因此Scal…
Scala模式匹配 模式匹配是Scala函数值和闭包后第二大应用功能.Scala为模式匹配提供了极大的支持,处理消息. 模式匹配包括一系列备选项,每个替代项以关键字大小写为单位.每个替代方案包括一个模式和一个或多个表达式,如果模式匹配,将会进行评估计算.箭头符号=>将模式与表达式分离. 尝试以下示例程序,它显示匹配的整数值. 示例 object Demo { def main(args: Array[String]) { println(matchTest(3)) } def matchTest…
Overview 本章主要介绍高级条件语句中的 switch 语句以及其增强版的模式匹配. Java 篇 Switch 特点 Java 中 switch 语句功能类似 if,但是 switch 主要用在多条件分支上. switch 语句由 case 分支和 default 组成,case 分支用于检查条件,且参数必须为常量,default 用于执行当任何 case 分支都不匹配时执行的语句. switch 语句 在 Java 1.7 以前只支持基本类型,Java 1.7 开始支持 String…
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹配的基本格式如下: data match { case ... => 执行语句 case ... => 执行语句 case _  => 执行语句 } 其中,data表示将要进行模式匹配的对象,match是模式匹配的关键字,后面紧跟的{}中包含若干条匹配的方向,且只会匹配其中满足条件的第一条:…
一.模式匹配1 1.介绍 模式匹配是Scala中非常有特色,非常强大的一种功能.模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件, 进行不同的处理. 但是Scala的模式匹配的功能比Java的swich case语法的功能要强大地多,Java的swich case语法只能对值进行匹配.但是Scala的模式匹配除了可以对值进行匹配之外, 还可以对类型进行匹配.对Array和List的元素情况进行匹配.对case class进行匹配.甚至对有值或没…
一.模式匹配 Scala支持模式匹配机制,可以代替swith语句.执行类型检查.以及支持析构表达式等. 1.1 更好的swith Scala不支持swith,可以使用模式匹配match...case语法代替.但是match语句与Java中的switch有以下三点不同: Scala中的case语句支持任何类型:而Java中case语句仅支持整型.枚举和字符串常量: Scala中每个分支语句后面不需要写break,因为在case语句中break是隐含的,默认就有: 在Scala中match语句是有返…
用过Scala的模式匹配,感觉Java的弱爆了.Scala几乎可以匹配任何数据类型,如果默认的不能满足你的要求,你可以自定义模式匹配. 介绍Scala的模式匹配前,我们先了解清楚unapply()与unapplySeq()两个方法: 名字叫做unapply和unapplySeq的方法在Scala里也是有特殊含义的. 我们前面说过case class在做pattern match时非常好用,而除case class之外,有unapply或unapplySeq方法的对象在pattern match时…
一.模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句.执行类型检查.以及支持析构表达式等. 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替.但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型:而 Java 中 case 语句仅支持整型.枚举和字符串常量: Scala 中每个分支语句后面不需要写 break,因为在 case 语句中 break 是隐…
1 match 应用案例 Scala的模式匹配 案例代码完整: package com.atguigu.base object MatchDemo { def main(args: Array[String]): Unit = { // 模式匹配,类似于Java的switch语法 var result = 0 val c = '-' c match { case '-' => result = 1 println("匹配到-") case '+' => result = -…
一.scala语言有什么特点?什么是函数式编程?有什么优点? 1.scala语言集成面向对象和函数式编程 2.函数式编程是一种典范,将电脑的运算视作是函数的运算. 3.与过程化编程相比,函数式编程里的函数计算可以随时调用. 4.函数式编程中,函数是一等功明. 二.scala中的闭包 1.定义:你可以在任何作用域内定义函数:包,类甚至是另一个函数或方法.在函数体内,可以访问到相应作用域内地任何变量.(重点)函数可以在变量不再处于作用域内时被调用. 例如: def mulBy(factor:Doub…
一.前言 样本类(case class)与模式匹配(pattern matching)是Scala中一个比较复杂的概念,往往让人感觉深陷泥沼.我在这里对Scala中的样本类与模式匹配进行了一些整理,希望让大家有些收获. 要学习样本类与模式匹配,先要理解这两个基本概念 .样本类是Scala提出的新概念,简单可以理解成希望用来做模式匹配的类加上case关键词就是样本类.模式匹配可以拆开来理解.这里模式不同于设计模式的模式,而是数据结构上的模式.这里的模式(pattern)是一个只包含变量. 有点类似…
一.函数式编程 Scala中的函数可以独立存在, 不需要依赖任 何类和对象 def  放在类中就是方法:放在外边就是函数 1.将函数赋值给变量 Scala中的函数是一等公民, 可以独立定义, 独立存在, 而且可以直接将函数作为  值赋值给变量            Scala的语法规定, 将函数赋值给变量时, 必须在函数后面加上空格和下划线 def sayHello(name: String) { println("Hello, " + name) } val sayHelloFunc…
1.进官网:https://www.scala-lang.org/ 上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,Scala的静态类型有助于避免复杂应用程序中的错误.Scala既有动态语言那样灵活简洁,同时又保留了静态类型带来的安全保障和执行效率,加上其强大的抽象能力,既能够处理脚本化的临时任务,又能处理高并发场景下的分布式互联网大数据应用. 2.Scala六个特性. (1)可以和java无缝整合,即在Scala…
from: Working with Scala's XML Support 虽然这个guy炒鸡罗嗦,但是还是讲到我要的那句话:  Because Scala doesn't support XML patterns with attributes. scala的模式匹配模式根本就不支持 属性 还是老老实实用XPath吧 XML is probably one of Scala's most controversial language features (right behind unrest…
scala语言的一大重要特性之一就是模式匹配.在我看来,这个怎么看都很像java语言中的switch语句,但是,这个仅仅只是像(因为有case关键字),他们毕竟是不同的东西,switch在java中,只能是用在函数体类的,且需要结合break使用.但是,在scala语言中,pattern matching除了有case关键字,其他,似乎和java又有很多甚至完全不同的东西. scala在消息处理中为模式匹配提供了强大的支持! 下面看看模式匹配的英文定义: A pattern match incl…
scala是一种集面向对象特性和函数式特性于一身并可运行在JVM上的强类型静态语言.因为可以运行在JVM上,并在设计时借鉴于大量的java语言特性,故可以和java互动并可以调用java相关类库,这让现在大量掌握java的编程者的智力投资得到极大的利用.并且还借鉴了Elang函数语言及Ruby等脚本语言,从而有高效,轻便等特性,从而原来掌握Ruby,Erlang等语言者,来学习scala时感到亲切从而更加快捷掌握. scala由洛桑联邦理工学院的Martin Odersky设计,第一个版本发布于…
Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. Scala的基础类型基本与javascript一致. Scala的数据类型全部相同于Java中,具有相同的内存占用和精度.以下表是有关可在Scala中所有的数据类型的细节: 数据类型 描述 Byte 8位有符号值.范围从-128到127 Short 16位有符号值.范围从-32768至32767 Int 32 位有符号值.范围从 -2147483648 to 2147483647 Long 64位…
由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去! 关于Scala高阶函数详解 1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数 2.高阶函数代码详解:高阶函数能够让方法的调用更加便捷 println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet //(1 to 9)数组中的map方法向数组中放* 用foreach用于来循环 println _ 表…
Scala内建的控制结构屈指可数,仅有if, while, for, match, try和函数调用而已. 几乎所有的Scala控制结构都会产生某个值(while和 do while虽然不能产生有意义的值,但是也会返回Unit类型的值,称为unit value,写成 () ).unit value () 是Scala的Unit不同于Java的void的地方.通常赋值语句会返回 unit value ().因此Java代码中经常用于文件读取的代码: var line = "" while…
[TOC] 标识符 可用的字符 处理括号类字符,分隔符之外,其他所有的可打印的ASCII字符,如字母,数字,下划线和美元符号($)均可出现在Scala标识符中 插入符包括了(,) [,] {,and} 分隔符包括 ` ' " . ; ,等 Scala还允许在标识符中使用编码在 \u0020到\u007F之间的字符,如数学符号,想 / 和 < 这样的操作符字符以及其他的一些符号 不能使用保留字. 普通标识符 常见的标识符往往由字母或下划线开头,后面跟着一些字母,数字,下划线和$符 Scala…
Scala 特性 面向对象特性 Scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述. 类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制.这两种途径能避免多重继承的种种问题. 函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用.Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化.Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型. 更进一步,程序员…