List
scala> val strList = List("Hadoop", "Spark", "Flink")
strList: List[String] = List(Hadoop, Spark, Flink)
# head返回列表第一个元素的值
scala> strList.head
res45: String = Hadoop
# tail返回列表除第一个元素以外的其他值
scala> strList.tail
res46: List[String] = List(Spark, Flink)
# 下面两个语句等效
scala> val anoList = "Apache" :: strList
anoList: List[String] = List(Apache, Hadoop, Spark, Flink)
scala> val anoList2 = strList.::("Apache")
anoList2: List[String] = List(Apache, Hadoop, Spark, Flink)
“::”是List类的一个方法, 而且scala规定当方法名以冒号“:”结尾时,其作为操作符使用时,将执行“右结合”规则,因此上面最后两个语句是等效的。
scala还定义了一个空列表对象Nil, 借助Nil可以将多个元素用操作符“::”串起来初始化一个列表,例如:
scala> val intList = 1 :: 2 :: 3 :: 4 :: Nil
intList: List[Int] = List(1, 2, 3, 4)
注意,最后的Nil是不能省略的,因为“::”是右结合的,而4是Int型,它并没有名为“::”的方法。
for循环, yield
如果循环体中都是赋值语句,可以把循环体直接和循环生成式放在一块,并可以使用yield输出变量
scala> for{i <- (0 to 5).toArray
| a = i*2
| b = i*3
| c = a+b
| }yield c
res12: Array[Int] = Array(0, 5, 10, 15, 20, 25)