首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scala专题系列 (八) : 模式匹配

模式匹配的类型分为 : 常量模式匹配 变量模式匹配 构造器模式 序列模式 元组模式 变量绑定模式 模式匹配 - 常量模式 所谓常量模式匹配就是case后面跟着的是常量,如同java的swich语句...创建一个单例Demo,里面包含一个函数matchTest,并且参数类型是Any(scala中所有类的超类,表示任意类型), 注意看函数体 x = match{ case 1 => "one" } 这个就是...元组模式用于匹配scala元组内容,用于匹配元组类型的变量内容。...模式匹配到的值被当作String绑定到了s,而在第二个模式,值被当作Int绑定到x; 当在匹配类型的时候,必须给出一个变量名,否则将会拿对象本身来匹配。...元组模式:匹配元祖 类型模式:匹配变量的类型 Option 类型 Option类型Scala程序中经常使用,可以将其与Java可用的null值进行比较,表示null值。

82420
您找到你想要的搜索结果了吗?
是的
没有找到

Scala语法笔记

1: -1 //JAVA或C++ Scala,每个表达式都有一个类型,如下: if ( x > 0) "positive" else -1 其中一个分支是java.lang.String 而另一个分支是...,Java的思想被颠覆) 过程,Scala对于不返回值的函数有特殊的表示语法,如果函数体包含在花括号但没有前面的=号,那么返回类型就是Unit 或def box(s : String) : Unit...Java里你将经常创建一个JavaBean样子的类去装多个返回值,Scala里你可以简单地返回一个元组。而且这么做的确简单:实例化一个装有一些对象的新元组,只要把这些对象放在括号里,并用逗号分隔即可。...一旦你已经实例化了一个元组,你可以用点号,下划线和一个基于1的元素索引访问它. 使用Set和Map 创建,初始化和使用可变集合 Map是Scala里另一种有用的集合类。...因此,任何依照(x: Int) => x + more在运行期创建的函数值将必须捕获它的自由变量,more,的绑定

1.2K20

Play For Scala 开发指南 - 第8章 用户界面

大家可能觉得奇怪,没有了上下文,模板如何获取当前的请求呢?答案很简单:通过参数传递喽!利用Scala的隐式参数的特性,调用模板函数不需要显示传入,编译器会自动传入。...然后我们就可以views/index.scala.html模板复用这个布局: @(title: String) @main(title) {   欢迎光临!... = Form(tuple("email" -> email, "password" -> nonEmptyText)) 此时使用 Form.bindFromRequest() 方法从当前的请求体绑定表单参数...println("绑定成功")   case _       => println("绑定失败") } 常用的约束如下: text: 映射为 scala.String 类型, 可以使用 minLength..."@userForm("email").value">    更进一步,模板层参数也不应该出现

1.5K20

(数据科学学习手札45)Scala基础知识

与Java较为相似,且Scala可以调用很多Java的包,本文就将针对Scala的基础数据结构、循环体以及错误处理机制进行基础的介绍; 二、基础数据类型与数据结构 2.1基础数据类型   Scala...2.2 Scala变量声明   和java类似,Scala的变量需要在创建进行声明,有var和val两种声明方式,其中val类型变量定义后不可以重新赋值,而var类型变量声明之后可以自由赋新值,下面...= 1.0 scala> val z:String="scala" z: String = scala   而事实上,即使你Scala声明变量不进行类型的指定,Scala内部也会根据你输入数据的具体类型进行判断...,Scala的列表被设计来存放各种类型的元素,且Scala的列表类型有三种模式,一种是当列表内部元素类型统一,如List[Int],一种是当列表同时包含几种不同类型元素,为List[Any],...case ex:错误类型 => 捕获指定错误后的执行内容 } catch捕获异常或错误,可以像上面一样指定错误类型与对应的处理方法,也可以用case ex:Exception => 的方式来更加泛型的捕获任何错误

2.6K20

3小Scala入门

4,变量 Scala支持两种类型的变量,即常量val和变量var。 常量程序不可以被重新指向,变量可以被重新指向新的对象。 声明变量可以指定类型,也可以由解释器根据初始值自动推断。 ?...注意当使用第(3)种方法scalac把代码编译,脚本必须要定义object单例对象。并且object对象实现main方法作为程序入口。 ?...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否集合。 ? ? 十,映射Map 映射和Python的字典很像,但是Scala的Map是一种不可变类型。...十一,元组Tuple 元组也是一种不可变的数据结构,其特点是可以存储类型不同的对象。 默认情况下元组的最长长度为22。 使用圆括号括号括起来的几个对象就构成了元组。 ? ?...Scala有3定义类的风格,java风格,简写风格,和case类风格。 简写风格可以类声明的参数前加上val即表示为类的属性,省去属性的绑定

1.6K30

3小Scala入门

4,变量 Scala支持两种类型的变量,即常量val和变量var。 常量程序不可以被重新指向,变量可以被重新指向新的对象。 声明变量可以指定类型,也可以由解释器根据初始值自动推断。 ?...注意当使用第(3)种方法scalac把代码编译,脚本必须要定义object单例对象。并且object对象实现main方法作为程序入口。 ?...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否集合。 ? ? 十,映射Map 映射和Python的字典很像,但是Scala的Map是一种不可变类型。...十一,元组Tuple 元组也是一种不可变的数据结构,其特点是可以存储类型不同的对象。 默认情况下元组的最长长度为22。 使用圆括号括号括起来的几个对象就构成了元组。 ? ?...Scala有3定义类的风格,java风格,简写风格,和case类风格。 简写风格可以类声明的参数前加上val即表示为类的属性,省去属性的绑定

3.5K20

3小Scala入门

4,变量 Scala支持两种类型的变量,即常量val和变量var。 常量程序不可以被重新指向,变量可以被重新指向新的对象。 声明变量可以指定类型,也可以由解释器根据初始值自动推断。 ?...注意当使用第(3)种方法scalac把代码编译,脚本必须要定义object单例对象。并且object对象实现main方法作为程序入口。 ?...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否集合。 ? ? 十,映射Map 映射和Python的字典很像,但是Scala的Map是一种不可变类型。...十一,元组Tuple 元组也是一种不可变的数据结构,其特点是可以存储类型不同的对象。 默认情况下元组的最长长度为22。 使用圆括号括号括起来的几个对象就构成了元组。 ? ?...Scala有3定义类的风格,java风格,简写风格,和case类风格。 简写风格可以类声明的参数前加上val即表示为类的属性,省去属性的绑定

1.6K30

Scala | 教程 | 学习手册 --- 常用集合

collections提供一些数据结构来收集给定类型的一个或多个值。 scala的集合还有单独的可变和不可变的集合的类型层次体系。...foreach()取一个函数,对列表每一项调用这个函数 map()取一个函数,将一个列表元素转换为另一个值或类型 reduce()取一个函数,将两个列表列表元素结合为一个元素 scala> val colors...scala,键和值都可以参数化。 创建map,指定键值为元组(),可以使用关系操作符 -> 来指定键和值元组。...= Nil) { print(i.head + ", "); i = i.tail } 2, 3, 5, 7, 11, 13, 创建一个空列表,实际上也是返回一个nil而不是一个新实例。...sortBy方法指定一个函数,它会返回一值,用来对列表的元素排序。 对于性能方面,::, drop, take列表前面完成,因此不存在性能损失。

55820

曾经以为Python的List用法足够灵活,直至我遇到了Scala

这将在后续介绍类和对象予以介绍,此处只需了解两种不同初始化方式的具体实现即可。 创建一个Array数组后,还需了解基本的常用操作。...在前面介绍操作符一文,有提到过Scala但凡以:结尾的操作符,那么都将以右操作数来调用,其实这里主要就是指的就是Array和List,而尤以List含有:方法居多。...Scala,Map也区分可变和不可变映射,且为同名类,如果需要创建可变Map,则需适当位置import相应类即可。...Scala,Map的元素类型实际上是一个二值的元组类型(Tuple2),两个值分别为key和value,而对于这个特殊的二值元组,实际上则又有两种具体表达形式,示例如下: scala> val map1...另外值得指出的是,得益于元组中支持不同类型的元素,所以函数需要返回多个不同类型结果即可以Tuple类型进行交换。

85030

大数据Flink进阶(十二):Flink本地模式开启WebUI

一、Flink 项目中添加本地模式 WebUI的依赖 Flink1.15版本之前根据使用Scala版本Java Flink项目或Scala Flink项目中添加对应Scala版本的依赖。...flink-runtime-web ${flink.version} 二、代码启用本地...代码示例: //1.创建本地WebUI环境 val configuration = new Configuration() //设置绑定的本地端口 configuration.set(RestOptions.BIND_PORT...流处理导入隐式转换,使用Scala API 需要隐式转换来推断函数操作后的类型 import org.apache.flink.streaming.api.scala._ //3.读取Socket...导入flink-runtime-web依赖之后最好重启开发工具,重新加载对应的依赖包,否则可能执行代码之后访问本地WebUI出现"{"errors":["Not found: /"]}"错误,访问不到

5.4K11

大数据--scala学习第一章:基础第二章:控制结构和函数第三章:数组第四章:字典和元组第五章:类第六章:对象第七章:包和引入第八章:继承第九章文件和正则表达式第十章特质:接口第十一章操作符第十二章函

3、特质可以有具体实现的方法,java的接口Scala可以当做特质来使用,也可以new对象继承特质:val acct=new Peolpe with Logger。...当只有一个参数你还可以直接valueAtOneQuater(x=>3*x)。甚至如果参数右侧只出现了一次你可以用_替换掉x:valueAtOneQuater(3*_)。...case _ =>0//全部匹配 } 4、匹配数组、列表和元组:匹配可以通过数组的个数,列表的头尾,元组的组成等进行匹配。...模式匹配可以将类型为Amount的对象和样例类进行匹配,然后参数会直接绑定然后直接用样例类的变量如下: amout math{ case Dollar(v)=>"$"+v case...比如map的get方法java可能返回为null而导致出现NullPointerException异常,而Scala返回的是一个Option[T]类型当值不存在为None,存在返回Some(T

4.4K20

Scala里面如何使用元组

元组Scala语言中是一种十分重要的数据结构,类似数据库里面的一行记录(row),它可以将不同类型的值组合成一个对象,实际应用十分广泛。...先来看一个简单的tuple定义: 上面的第二种例子,可以直接通过name和age来访问单个tuple的元素 例子(1): 一个简单的模式匹配 例子(2): 根据类型匹配 注意上面的代码里面case后面的如果有...List[String]类型的,最好用一个类封装起来在做匹配,否则会出错。...变量绑定模式 注意普通的类不能直接使用上面的模式匹配 例子(4): for循环的使用元组进行的模式匹配 结果: 最后我们使用元组,来模拟一个类似下面的SQL的例子: 表(pet)结构: 统计SQL语句...: Scala完整代码如下: 其实,核心代码只有中间的这一部分: 最终结果: 简单解释一下核心部分的代码含义: 首先执行了一个groupBy函数,对元组里面的第一个元素也就是宠物名进行 分组,分组之后

79840

Scala——多范式, 可伸缩, 类似Java的编程语言

创建Scala项目 使用IDEA编写Scala代码, 更符合现在公司趋势 我们整合Scala以后, 再次创建新的项目就会有Scala选项 ?...编译器进行类型匹配,如果找不到合适的类型,那么隐式转换会让编译器作用范围内自动推导出来合适的类型。...隐式转换作用就是:当调用方法,不必手动传入方法的隐式参数,Scala会自动作用域范围内寻找隐式值自动传入。...隐式类注意: .隐式类必须定义类,包对象,伴生对象。 隐式类的构造必须只有一个参数,同一个类,包对象,伴生对象不能出现类型构造的隐式类。...参数类型 和 返回类型 的不同名称的隐式转换函数 * 3.隐式类 * 类的前面加上关键字implicit, 必须定义object和class * 隐式类的所有属性方法都可以被调用

2.9K20

学好Spark必须要掌握的Scala技术点

ScalaOption类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None)。...,那么就意味着该变量的引用不可变,该引用的内容是不是可变还取决于这个引用指向的集合的类型 2.3 元组 映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值,元组是不可变的 ?...类、对象、继承和trait 3.1 类 3.1.1 类的定义 Scala,可以定义类、以函数定义函数、可以定义object;可以函数定义类,类成员的缺省访问级别是:public...//Scala,类不用声明为public //Scala源文件可以包含多个类,所有这些类都具有公有可见性 class Person { //val修饰的变量是只读属性,相当于Javafinal...5.1 作为值的函数 定义函数格式:val 变量名 = (输入参数类型和个数) => 函数实现和返回值类型和个数。

1.5K50

Scala语言:既存类型

类型变量 ti 就称为类型 T forSome {Q}中被绑定 T 但是没被绑定类型变量就被称为 T 是自由的。 T forSome {Q}的类的实例就是类 σT,σ 是 t1,......值上的既存量化 为了语法上的方便,既存类型上的绑定子句可以包括值声明 val x: T。...通配符类型的形式为 _>:L:L 被忽略则>:scala.Nothing。如果上界<:U 被忽略则用<:scala.Any。...通配符类型是既存限定类型变量的简写,既存的限定条件是内涵的。 通配符类型只能作为参数化类型类型参量出现。...通配符类型可以作为中缀类型,函数类型元组类型的一部分出现。它们的扩展也就是等价参数化类型的扩展 列表的后两个类型是等价的。

77660
领券