Scala for循环
基本使用
增强型for循环
scala基本for循环如下,代码将names遍历并打印包含的名字。
val names = Seq("Kitty", "Tom", "Luke", "Kit")
for (name <- names) {
println(name)
}
相较Java,语法层面来看只是将 :
换成<-
。实际上由于Scala已经将:
用于类型定义,这里使用:
会造成二义性,scala这里使用<-
用于循环语义。
生成器表达式
在Java中循环经常会用到数值递增/递减,例如for(int i = 0, i < 10, i++)
scala中不提供类似的语法结构,与之对应的是提供了 生成器表达式(Generator Expression),之所以叫这个名字,是因为该表达式会基于集合生成单独的数值。左箭头操作符(<-) 用于对像列表这样的集合进行遍历。
for (i <- 1 to 10) println(i)
不同于Java循环中数值操作,Scala取而代之的是提供了Range类型
持 Range 的 类 型 包 括 Int 、 Long 、 Float 、 Double 、 Char 、BigInt和 BigDecimal
具体示例如下
1 to 10 // Int类型的Range,包括区间上限,步长为1 (从1到10)
1 until 10 // Int类型的Range,不包括区间上限,步长为1 (从1到9)
1 to 10 by 3 // Int类型的Range,包括区间上限,步长为3
10 to 1 by -3 // Int类型的递减Range,包括区间下限,步长为-3
1.1f to 10.3f by 3.1f // F