排序
4.3 Scala集合:Map
Map是一个key-value 对的集合。在其它语言中,它被称为词典、关联数组、或HashMap。这是一个根据key查找value的高效的数据结构。下面的代码段演示了怎样创建和使用一个Map:val capitals = Map(...
11.1文件IO
基本的输入输出可以用scala.io.StdIn.readLine()函数从控制台读取一行输入。如果要读取数字、Boolean或者是字符,可以用readInt、readDouble、readByte、readShort、readLong、readFloat、readB...
9.3 复合赋值运算与浮点值比较等
复合赋值运算Scala中没有++和--,但同样提供了复合的赋值运算符。// 变量值加1和减1var a16 = 1a16 += 1println(a16)a16 -= 1println(a16)var i = 1i *= 2println(i)i *= 2println(i)i ...
7.8 枚举
在Scala中没有enum关键字。相反,Scala提供了一个Enumeration类,我们可以扩展这个类来创建枚举类型。object demo10 { // 创建枚举类型 object Stars extends Enumeration { type Stars = ...
4.4 Scala集合:Queue和Stack
Queue队列(queue)是一种“先进先出”的数据结构。这一节我们学习如何使用Scala的不可变队列,以及执行一些常见的操作,如初始化,添加或删除元素,在队列中通过键找到元素,入队和出队。Queue...
5.1 函数字面量
函数是一个可执行代码块,它接收输入参数返回一个值。它概念上与数学中的函数相似,它接收输入并返回一个输出。Scala是一个函数式编程语言,它将函数当作一等公民;一个函数可以像一个变量一样...
8.3 使用正则表达式处理字符串
字符串中正则表达式模式匹配通过在String上调用.r方法来创建一个scala.util.matching.Regex对象,然后在findFirstIn中使用该模式来查找一个匹配,在findAllIn中使用该模式来查找所有的匹配。 ...
2.1 变量
Scala有两种类型变量:可变的和不可变的。不可变意味着变量的值一旦声明就不能更改。数据不变性帮助在管理数据时实现并发控制。强烈建议不要使用可变变量。Scala作为语言中的第一类公民,高度鼓...
7.2 单例对象和伴生对象
单例对象在面向对象编程中一个常见的设计模式是定义一个只能被实例化一次的类。一个只能被实例化一次的类叫做“单例(singleton)”。Scala不提供任何静态修饰符,这与构建纯面向对象语言的设计...
7.6 模式匹配
在前面的章节已经讲了Scala中的简单模式匹配。模式匹配是一个表达式,因此它会导致一个值,该值可能被分配或返回。例如:44 match { case 44 => true // 如果匹配了44,则结果为true...
5.2 函数方法和函数参数
函数方法也可以使用def关键字来定义有名字的函数。在Scala 中,使用关键字def 定义函数,其语法格式如下:def 函数名(参数1:数据类型,参数2:数据类型):函数返回类型= { 函数体}这种方式,通常...
2.4 数组
Scala语言中提供的数组是用来存储固定大小的同类型元素的。数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。Scala中数组分为定长数组和变长数组。创建定长数组Array的两种方式:先...
5.3 高阶函数
什么是高阶函数?在scala中,函数可以作为参数来传递。下面的代码定义一个接受函数作为参数的函数:// 函数定义def operation(func:(Int, Int) => Int) = { val result = func(4,4) pri...
3.3 简单模式匹配
Scala中没有提供与Java语言中switch类似的语法,但是提供了一个更加强大的模式匹配功能。模式匹配是一个Scala 概念,它看上去与其它语言中的一个switch 语句很类似。不过,它是一个比switch 语...
9.4 创建数值型集合和格式化数值
创建数值型的Range、List和Array有的时候,我们需要创建一个范围、列表或数字数组,用于for循环或测试目的。这时可以使用Int类的to方法创建一个包含所需元素的范围,代码如下:// 创建数值的Ran...
1.3 使用IntelliJ IDEA集成开发环境
在本节中,我们将使用流行的IntelliJ IDEA来展示如何设置编写Scala代码的开发环境。本节包括如下内容:下载IntelliJ IDEA安装IntelliJ IDEA安装Scala插件注意:确保已经安装好了JDK 8+。 下载I...