Scala 编程
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Scala 系列(十三)—— 隐式转换和隐式参数
一、隐式转换1.1 使用隐式转换隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下:// 普通人class Person(val name: String)// 雷神class Thor(val name: String) { // 正常情况下只有雷神才能举起雷神之锤 def hammer(): Unit = { println(name + "举起雷神之锤") }}o..转载 2020-11-01 23:12:04 · 124 阅读 · 0 评论 -
Scala 系列(十二)—— 类型参数
一、泛型Scala 支持类型参数化,使得我们能够编写泛型程序。1.1 泛型类Java 中使用<>符号来包含定义的类型参数,Scala 则使用[]。class Pair[T, S](val first: T, val second: S) { override def toString: String = first + ":" + second}object ScalaApp extends App { // 使用时候你直接指定参数类型,也可以不指定,...转载 2020-11-01 23:04:02 · 232 阅读 · 0 评论 -
Scala 系列(十一)—— 模式匹配
一、模式匹配Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。1.1 更好的swithScala 不支持 swith,可以使用模式匹配match...case语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同:Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常量; Scala 中每个分支语句后面不需要写 break,因为在 case 语句中 break 是隐含..转载 2020-11-01 22:49:22 · 129 阅读 · 0 评论 -
Scala 系列(十)—— 函数 & 闭包 & 柯里化
一、函数1.1 函数与方法Scala 中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数。// 定义方法def multi1(x:Int) = {x * x}// 定义函数val multi2 = (x: Int) => {x * x}println(multi1(3)) //输出 9println(multi2(3)) //输出 9也可以使用def定义函数:def multi3 = (x: Int) =>...转载 2020-11-01 22:45:17 · 145 阅读 · 0 评论 -
Scala 系列(九)—— 继承和特质
一、继承1.1 Scala中的继承结构Scala 中继承关系如下图:Any 是整个继承关系的根节点; AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object; AnyVal 是所有值类型的一个标记; Null 是所有引用类型的子类型,唯一实例是 null,可以将 null 赋值给除了值类型外的所有类型的变量; Nothing 是所有类型的子类型。1.2 extends & overrideS转载 2020-11-01 00:06:05 · 218 阅读 · 1 评论 -
Scala 系列(八)—— 类和对象
一、初识类和对象Scala 的类与 Java 的类具有非常多的相似性,示例如下:// 1. 在 scala 中,类不需要用 public 声明,所有的类都具有公共的可见性class Person { // 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时 Scala 就无法进行类型推断,所以需要显式指明类型 private var name: Stri转载 2020-10-31 23:52:24 · 192 阅读 · 0 评论 -
Scala 系列(七)—— 常用集合类型之 Map & Tuple
一、映射(Map)1.1 构造Map// 初始化一个空 mapval scores01 = new HashMap[String, Int]// 从指定的值初始化 Map(方式一)val scores02 = Map("hadoop" -> 10, "spark" -> 20, "storm" -> 30)// 从指定的值初始化 Map(方式二)val scores03 = Map(("hadoop", 10), ("spark", 20), ("storm", 3转载 2020-10-31 23:45:49 · 296 阅读 · 0 评论 -
Scala 系列(六)—— 常用集合类型之 List & Set
一、List字面量List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表。scala> val list = List("hadoop", "spark", "storm")list: List[String] = List(hadoop, spark, storm)// List 是不可变scala> list(1) = "hive"<console&g转载 2020-10-31 23:38:44 · 334 阅读 · 0 评论 -
Scala 系列(五)—— 集合类型综述
一、集合简介Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改。即可以更改,添加,删除集合中的元素; 不可变集合类:不能被修改。对集合执行更改,添加或删除操作都会返回一个新的集合,而不是修改原来的集合。 二、集合结构Scala 中的大部分集合类都存在三类变体,分别位于scala.collection,scala.collection.immutable,scala.collection.mutable包中。还有部分集合类位于sc...转载 2020-10-31 23:00:43 · 165 阅读 · 1 评论 -
Scala 系列(四)—— 数组Array
一、定长数组在 Scala 中,如果你需要一个长度不变的数组,可以使用 Array。但需要注意以下两点:在 Scala 中使用(index)而不是[index]来访问数组中的元素,因为访问元素,对于 Scala 来说是方法调用,(index)相当于执行了.apply(index)方法。 Scala 中的数组与 Java 中的是等价的,Array[Int]()在虚拟机层面就等价于 Java 的int[]。// 10 个整数的数组,所有元素初始化为 0scala> val...转载 2020-10-31 22:57:07 · 576 阅读 · 0 评论 -
Scala 系列(三)—— 流程控制语句
一、条件表达式ifScala 中的 if/else 语法结构与 Java 中的一样,唯一不同的是,Scala 中的 if 表达式是有返回值的。object ScalaApp extends App { val x = "scala" val result = if (x.length == 5) "true" else "false" print(result) }在 Java 中,每行语句都需要使用;表示结束,但是在 Scala 中并不需要。除非你在单行语句中写了多行..转载 2020-10-31 22:53:36 · 165 阅读 · 0 评论 -
Scala 系列(二)—— 基本数据类型和运算符
一、数据类型1.1 类型支持Scala 拥有下表所示的数据类型,其中 Byte、Short、Int、Long 和 Char 类型统称为整数类型,整数类型加上 Float 和 Double 统称为数值类型。Scala 数值类型的取值范围和 Java 对应类型的取值范围相同。数据类型 描述 Byte 8 位有符号补码整数。数值区间为 -128 到 127 Short 16 位有符号补码整数。数值区间为 -32768 到 32767 Int 32 位有符号补码整数。转载 2020-10-31 22:48:25 · 353 阅读 · 0 评论 -
Scala 系列(一)—— Scala简介及开发环境配置
一、Scala简介1.1 概念Scala 全称为 Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长。Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的 Java 平台上,可以与所有的 Java 类库无缝协作。1.2 特点1. Scala是面向对象的Scala 是一种面向对象的语言,每个值都是对象,每个方法都是调用。举例来说,如果你执行1+2,则对于 Scala 而言,实际是在调用 .转载 2020-10-31 22:40:12 · 2353 阅读 · 1 评论
分享