Scala语言(二)
控制结构
if语句
while循环
for循环
异常处理
受检异常是在写代码的时候,编程人员必须明确,自己就能清楚地知道,代码在执行过程当中可能会抛出哪些错误。并且对每一个可能抛出的错误都要给出处理方法
不受检异常不是在编译阶段抛出来,是在运行阶段抛的
Scala把所有异常都当做不受检异常。
Scala对循环控制没有break和continue
数据结构
数组
引用数组元素是用圆括号()
元组
数组是都是同一类型的值的集合。但如果我们需要一个集合中元素的类型是不相同的,这个时候就必须用到一个叫元组的数据结构
在Spark编程中会经常用到元组
容器
scala.colletion封装了一些超类或特质,定义了一些可变容器和不可变的一些通用操作
这些还属于特质,具体的容器类会从特质往下继承
Scala当中没有接口的概念,由特质概念和接口相似
最顶层有一个叫Traversable的特质
List类(举个例子)是层层继承下来的
Traversable特质中定义的抽象方法foreach,用来遍历容器内部的元素,那么任何一个容器类,是从Traversable继承下来的,那你在实现容器类的时候,必须把foreach方法实现了。所以seq、set、map的区别就在于元素的索引方式不同(就是对于foreach的实现方式不同)
List
列表属于具体的容器类了,而不是特质了
特点:
①
②
声明的时候就要初始化
构造列表的常用方法
没有覆盖原来旧的strList,生成新的副本
得到
快速得到一个列表
向量
:+与+:
Range
一种特殊的带索引的不可变数字等差序列
Range可以支持不同类型的数值序列
until是不包含右重点
集合
var mySet = Set("Hadoop","Spark")是生成不可变集的对象
mySet是可变的变量(开始指向了不可变集,后来又指向了一个新的增加了Scala的不可变集)
生成可变集
不可变类型的变量指向了一个可变集。这次是指针没有变,但是指针指向的数据集变了
映射(Map)