
Scala
红尘丶世界
从来如此,便是对么?
展开
-
Scala 嵌套Map 获取值
def main(args: Array[String]): Unit = { val map: Map[String, AnyRef] = Map( "aaa" -> Map("bbb" -> "ccc"), "ddd" -> Map("eee" -> Map("fff" -> "ggg")), "name" -> "zhang" ) //方式一 val map1: Map[String, Any..原创 2021-04-14 13:37:11 · 1356 阅读 · 0 评论 -
Scala Actor用法
文章目录Actor并发编程模型使用方式代码示例效果截图 乱序输出效果截图 正序输出Actor程序运行流程Actor发送消息/接收消息发送信息接收信息代码示例代码效果 持续打印hello持续接收消息代码示例发送和接收自定义消息代码示例一 使用`!?`来发送同步消息代码示例二 使用`!`发送异步无返回消息效果截图代码示例三 使用`!!`发送异步有返回消息Actor并发编程模型Actor并发...原创 2020-02-06 20:27:48 · 2041 阅读 · 0 评论 -
Scala 泛型的用法
文章目录泛型定义泛型方法语法格式代码示例定义泛型类语法格式代码示例泛型上下界上界定义语法格式上界代码示例下界定义语法格式下界代码示例泛型 协变、逆变、非变语法格式代码示例泛型就是一种不确定的数据类型,可以支持多种类型定义泛型方法在scala中,使用方括号来定义类型参数。语法格式def 方法名[泛型名称](..) = { //...}代码示例object Test01...原创 2020-02-06 16:54:40 · 543 阅读 · 0 评论 -
scala 中的提取器的用法
定义提取器unapply是将该类的对象,拆解为一个个的元素。要实现一个类的提取器,只需要在该类的伴生对象中实现一个unapply方法即可语法格式def unapply(stu:Student):Option[(类型1, 类型2, 类型3...)] = { if(stu != null) { Some((变量1, 变量2, 变量3...)) } ...原创 2020-02-04 16:25:31 · 216 阅读 · 0 评论 -
Scala 中的异常处理
异常代码object Test01 { def main(args: Array[String]): Unit = { val i = 10 / 0 println("你好!") }}报错信息捕获异常语法格式try中的代码是我们编写的业务处理代码在catch中表示当出现某个异常时,需要执行的代码在finally中,是不管是否出现异常都会执行的代码...原创 2020-02-04 16:13:28 · 478 阅读 · 0 评论 -
Scala 中正则表达式的使用
正则表达式在scala中,可以很方便地使用正则表达式来匹配数据。定义Regex类scala中提供了Regex类来定义正则表达式要构造一个RegEx对象,直接使用String类的r方法即可建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠来进行转义使用findAllMatchIn方法可以获取到所有正则匹配到的字符串val regEx = """正则表达式"""....原创 2020-02-04 16:00:50 · 524 阅读 · 0 评论 -
Scala 中的偏函数
偏函数偏函数可以提供了简洁的语法,可以简化函数的定义。配合集合的函数式编程,可以让代码更加优雅。偏函数被包在花括号内没有match的一组case语句是一个偏函数偏函数是PartialFunction[A, B]的一个实例A代表输入参数类型B代表返回结果类型代码示例object Test01 { def main(args: Array[String]): Unit = ...原创 2020-02-04 15:25:43 · 4019 阅读 · 0 评论 -
Scala 中的Option类型
文章目录Option类型代码示例Option类型使用Option类型,可以用来有效避免空引用(null)异常。也就是说,将来我们返回某些数据时,可以返回一个Option类型来替代。scala中,Option类型来表示可选值。这种类型的数据有两种形式:Some(x):表示实际的值None:表示没有值使用getOrElse方法,当值为None是可以指定一个默认值代码示例obje...原创 2020-02-04 15:09:01 · 810 阅读 · 0 评论 -
Scala 中的 模式匹配
文章目录模式匹配简单模式匹配语法格式代码示例效果截图匹配类型语法格式代码示例匹配样例类代码示例守卫代码示例匹配数组代码示例匹配列表代码示例匹配元组代码示例变量声明中的模式匹配代码示例模式匹配scala中有一个非常强大的模式匹配机制,可以应用在很多场景:switch语句类型查询使用模式匹配快速获取数据简单模式匹配在Java中,有switch关键字,可以简化if条件判断语句。在...原创 2020-02-04 14:55:08 · 299 阅读 · 0 评论 -
Scala 中的样例类、样例类的方法、样例对象
文章目录样例类定义语法格式代码示例样例类的方法apply方法 和 toString 方法代码示例equals方法代码示例hashCode方法代码示例copy方法样例对象定义语法格式代码示例样例类样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类)定义语法格式case class 样例类名([var/val] 成员变量名1:类型1, 成员变量名2:类...原创 2020-02-04 13:38:32 · 2620 阅读 · 0 评论 -
Scala 中的 特质(trait)
文章目录特质(trait)概念语法继承特质继承单个trait 代码示例继承多个特质 代码示例定义具体的方法代码示例trait中定义具体的字段和抽象的字段定义代码示例模板模式代码示例对象混入trait语法代码示例trait调用链代码示例trait的构造机制代码示例trait继承class代码示例特质(trait)scala中没有Java中的接口(interface),替代的概念是——特质概念...原创 2020-01-23 18:05:33 · 862 阅读 · 0 评论 -
Scala 中的抽象类和抽象字段及匿名内部类
文章目录抽象类定义语法代码示例抽象字段语法代码示例抽象类定义如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类不完整定义有两种情况:方法没有方法体(抽象方法)变量没有初始化(抽象字段)语法定义抽象类和Java一样,在类前面加上abstract关键字// 定义抽象类abstract class 抽象类名 { // 定义抽象字段 val 抽象字段名...原创 2020-01-23 16:27:08 · 427 阅读 · 0 评论 -
Scala 中的类型判断
isInstanceOf/asInstanceOfscala中对象提供isInstanceOf和asInstanceOf方法。isInstanceOf判断对象是否为指定类以及其子类的对象asInstanceOf将对象转换为指定类型用法// 判断对象是否为指定类型val trueOrFalse:Boolean = 对象.isInstanceOf[类型]// 将对象转换为指定类型...原创 2020-01-23 16:01:05 · 2206 阅读 · 0 评论 -
Scala中的继承 和 override、super关键字
定义scala语言是支持面向对象编程的,我们也可以使用scala来实现继承,通过继承来减少重复代码。scala和Java一样,使用extends关键字来实现继承可以在子类中定义父类中没有的字段和方法,或者重写父类的方法类和单例对象都可以从某个父类继承语法class/object 子类 extends 父类 { ..}代码示例object Test01 { c...原创 2020-01-23 15:22:09 · 1089 阅读 · 0 评论 -
Scala 中的单例对象 和 伴生对象
文章目录定义单例对象代码示例定义单例对象scala中没有Java中的静态成员,我们想要定义类似于Java的static变量、static方法,就要使用到scala中的单例对象——object.单例对象表示全局仅有一个对象(类似于Java static概念)定义单例对象和定义类很像,就是把class换成object在object中定义的成员变量类似于Java的静态变量可以使用obje...原创 2020-01-22 16:44:23 · 398 阅读 · 0 评论 -
Scala 中 的构造器
定义方式一object Test01{ class Person { private[this] var _name: String = _ private[this] var _age: Int = _ // name get /set 方法 (自动生成) def name: String = _name def name_=(value:...原创 2020-01-22 16:25:51 · 293 阅读 · 0 评论 -
Scala 的 get /set 方法
定义在scala中,没有public关键字,任何没有被标为private或protected的成员都是公共的代码示例object Test{ class Person{ //private var name: String = _ //private var age: Int = _ //下方是idea 自动生成 get/set 方法 后修改的 //ide...原创 2020-01-22 15:58:48 · 3500 阅读 · 0 评论 -
scala创建类和对象以及定义和访问成员 调用成员方法
代码示例object Test01{ // 如果类是空的,没有任何成员,可以省略{} // 如果构造器的参数为空,可以省略() class Person { //使用下划线进行初始化 var name:String = _ var age:Int = _ def sayHello(): Unit = { println("你好世界") ...原创 2020-01-22 15:13:49 · 965 阅读 · 0 评论 -
Scala 中的函数式编程
文章目录1.遍历 (foreach)方法方法说明代码示例使用类型推断简化函数定义代码示例使用下划线来简化函数定义代码示例2.映射 (map)方法方法说明代码示例3.映射扁平化(flatmap)定义方法方法说明代码示例使用flatMap简化操作代码示例4.过滤(filter)方法方法说明代码示例5.是否存在(exists)方法方法说明6.排序(sorted、sortBy、sortWith)默认排序(...原创 2020-01-17 19:09:30 · 864 阅读 · 0 评论 -
Scala 中的 iterator迭代器
文章目录iterator迭代器 介绍使用迭代器遍历集合代码示例iterator迭代器 介绍scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合使用迭代器遍历集合使用iterator方法可以从集合获取一个迭代器迭代器的两个基本操作hasNext——查询容器中是否有下一个元素next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementEx...原创 2020-01-17 17:15:59 · 2071 阅读 · 0 评论 -
Scala 中的映射(Map)
文章目录概念不可变Map定义语法代码示例可变Map代码示例映射的基本操作基本操作代码示例概念Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。不可变Map定义语法val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好val/var map = Map((键, 值), ...原创 2020-01-17 17:04:48 · 430 阅读 · 0 评论 -
Scala 中的集(Set)
文章目录Set不可变集定义语法代码示例基本操作代码示例可变集定义代码示例SetSet(集)是代表没有重复元素的集合。Set具备以下性质:元素不重复不保证插入顺序scala中的集也分为两种,一种是不可变集,另一种是可变集。不可变集定义语法//创建一个空的不可变集,语法格式val/var 变量名 = Set[类型]()//给定元素来创建一个不可变集,语法格式val/va...原创 2020-01-17 16:44:37 · 521 阅读 · 0 评论 -
Scala 列表 (list) 和 列表常用的操作
文章目录概念不可变列表概念定义语法代码示例可变列表概念定义语法格式代码示例可变列表的操作代码示例列表常用的操作判断列表是否为空代码示例拼接两个列表代码示例获取列表的首个元素和剩余部分代码示例反转列表代码示例获取列表前缀和后缀代码示例扁平化(压平)代码示例转换字符串代码示例生成字符串代码示例并集代码示例交集代码示例差集代码示例概念列表是scala中最重要的、也是最常用的数据结构。List具备以...原创 2020-01-17 16:27:15 · 3261 阅读 · 0 评论 -
Scala 元组
文章目录用法定义元组语法代码示例一代码示例二访问元组代码示例用法元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。元组的元素是不可变的。定义元组语法//使用括号来定义元组 类型可以省略 scala 会自动推断val/var 元组名称:(类型1,类型2,类型3...) = (元素1, 元素2, 元素3....)//使用箭头来定义元组(元组只有两个元素)val/v...原创 2020-01-17 15:35:12 · 201 阅读 · 0 评论 -
Scala 数组 、遍历数组 和 数组常用和操作
scala 数组常用的操作原创 2020-01-17 15:18:44 · 8558 阅读 · 3 评论 -
Scala 函数
文章目录概念函数的定义语法代码示例方法和函数的区别代码示例方法转函数代码示例概念函数是一个对象(变量)类似于方法,函数也有输入参数和返回值函数定义不需要使用def定义无需指定返回值类型函数的定义语法val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => 函数体代码示例val add = (x:Int, y:Int) => x + yv...原创 2020-01-16 21:17:42 · 189 阅读 · 0 评论 -
Scala 中的方法
文章目录1.方法的定义语法注意项代码示例注意代码示例2.方法参数类型默认参数代码示例带名参数代码示例变长参数语法格式代码示例3.方法的调用调用方式后缀调用法中缀调用法操作符即方法花括号调用法无括号调用法1.方法的定义语法def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = { // 方法体:一系列的代码}注意项参数列表的...原创 2020-01-16 20:32:13 · 380 阅读 · 0 评论 -
Scala break 和 continue
文章目录break 和 continue实现break代码示例实现continue代码示例break 和 continue在scala中,类似Java和C++的break/continue关键字被移除了如果一定要使用break/continue,就需要使用scala.util.control包的Break类的breable和break方法。实现break导入Breaks包impor...原创 2020-01-16 19:43:51 · 370 阅读 · 0 评论 -
Scala 中的循环
文章目录循环for表达式语法代码示例简写方式嵌套循环守卫语法代码示例for 推导式代码示例while 表达式代码示例循环在scala 中, 循环可以使用 for 和 while,一般最常用的是for 循环,因为for循环表达式语法更简洁for表达式语法for(i <- 表达式/数组/集合) { // 表达式}代码示例//使用for表达式打印1-10的数字//1...原创 2020-01-16 18:35:11 · 2980 阅读 · 0 评论 -
Scala 中的条件表达式
文章目录用法区别代码示例块表达式代码示例用法scala条件表达式的语法和Java基本一样。区别在scala中条件表达式中是有返回值的在scala中,没有三元表达式,可以使用if表达式替代三元表达式代码示例//定义一个变量sex,再定义一个result变量,如果sex等于"male",result等于1,否则result等于0val sex = "man"val resul...原创 2020-01-16 18:11:10 · 439 阅读 · 0 评论 -
Scala 的 数据类型 和 操作符
文章目录数据类型注意运算符注意代码示例scala类型层次结构说明代码示例数据类型注意在scala中所有的数据类型都是以大写字母开头整型是Int 而不是 Integer基础类型类型说明Byte8位带符号整数Short16位带符号整数Int32位带符号整数Long64位带符号整数Char16位无符号Unicode字符Stri...原创 2020-01-16 17:59:05 · 305 阅读 · 0 评论 -
Scala 字符串的定义
文章目录方式一 使用双引号语法代码示例截图示例方式二 使用插值表达式好处语法格式代码示例方法三 使用三引号使用场景好处语法格式代码示例方式一 使用双引号语法val/var 变量名 = “字符串”代码示例val name = "hadoop"println(name + " " + "length=" + name.length)截图示例方式二 使用插值表达式好处可以有效的避...原创 2020-01-16 17:40:11 · 997 阅读 · 0 评论 -
Scala变量
文章目录1.scala中的变量种类语法格式val 变量代码示例var 变量代码示例强调代码示例2.惰性赋值解决语法格式说明代码示例1.scala中的变量种类scala中变量有两种,分别是 val 变量 和 var变量语法格式val/var 变量标识:变量类型 = 初始值val 变量不能进行二次赋值如果重新进行赋值会报错代码示例val name:String:name...原创 2020-01-16 17:17:42 · 325 阅读 · 0 评论