建议采用Scala Work Sheet进行本节实验
Tuple
元组,元组中可以由很多数据,读取Tuple数据时使用._的方式读取,并且索引从1开始。经常用Tuple接受函数的返回值。
val pair = (26,"Hello","Scala")
println(pair._1)
println(pair._2)
println(pair._3)
Array
数组使用圆括号()读取,索引从0开始,向左的箭头符号<-是赋值的意思。第二种循环方式是增强for循环的写法。
Scala中的数组是以Java数组实现的。
- 定长数组,长度不可改变的数组
val arr = Array(1,2,3,4,5)
for(i <- 0 until arr.length) println("arr("+i+") : " + arr(i))
for(elem <- arr) println(elem)
- 变长数组,长度可改变的数组
Scala中的ArrayBuffer实现了变长数组,需要进行包的导入
import scala.collection.mutable.ArrayBuffer
当不知道数组有多少个元素的情况下,可以先定义一个缓冲数组,然后调用.toArray,也可以使用toBuffer将定长数组转换成缓冲数组。
- 数组转换
val a = Array(1,2,3,4,5)
val mul2 = for(elem <- a) yield elem * 2
val mul2o = for(elem <- a if elem%2 == 0) yield elem * 2
上面的代码将产生一个新的数组,原始数组是定长数组,那么结果也是定长数组,如果原始数组是缓冲数组,那么结果也是缓冲数组。第二个循环当需要满足特定条件的元素进行转换时,在for中加入if条件判断。
Map
只取key或只取value时,需要使用单下划线_作为占位符,使用占位符后不能对其进行引用。
val ages = Map("Spark" -> 6,"Scala" -> 10)
for((k,v) <- ages) println("Key is " + k + ", Value is " + v)
for((k,_) <- ages) println("Key is " + k)