Scala for循环
在Scala中, for循环被称为for-comprehension。它可用于迭代、过滤和返回迭代的集合。for-comprehension看起来有点像命令式语言中的for循环,不同的是它构造了所有迭代结果的列表。
语法
for( i <- range){
// statements to be executed
}
在上面的语法中,range是一个值,它有起始点和结束点。您可以通过使用to或until关键字传递range。 使用to关键字的Scala for循环示例
object MainObject {
def main(args: Array[String]) {
for( a <- 1 to 10 ){
println(a);
}
}
}
输出:
1
2
3
4
5
6
7
8
9
10
在下面的示例中, until被用来代替 to 。在 until 和 to 之间的主要区别是, to 会包含范围内给定的起始和结束值,而 until 会排除范围的最后一个值。因此,下面的示例将打印出1到9。
使用 until关键字的Scala for循环示例
object MainObject {
def main(args: Array[String]) {
for( a <- 1 until 10 ){
println(a);
}
}
}
输出:
1
2
3
4
5
6
7
8
9
在迭代字符串或数组时,使用 until 关键字是很有帮助的,因为数组的范围是从0到n-1。 until 不超过n-1,所以您的代码不会报告上限溢出的错误。
Scala的for循环过滤示例
您可以使用 for 来过滤数据。在下面的示例中,我们通过传递条件表达式来过滤我们的数据。该程序仅打印给定范围内的偶数值。
object MainObject {
def main(args: Array[String]) {
for( a <- 1 to 10 if a%2==0 ){
println(a);
}
}
}
产出:
2
4
6
8
10
Scala for-loop示例,使用 yield 关键字
在上面的示例中,我们使用了 yield 关键字,在循环迭代完成后返回结果。for循环内部使用缓冲区来存储迭代结果,在完成所有迭代后从该缓冲区中产出最终结果。它不像命令式循环那样工作。
object MainObject {
def main(args: Array[String]) {
var result = for( a <- 1 to 10) yield a
for(i<-result){
println(i)
}
}
}
输出:
1
2
3
4
5
6
7
8
9
10
Scala集合中的for循环
在Scala中,你可以使用for each循环或for-comprehensions来迭代集合,如列表、序列等。
让我们看一个例子。
Scala集合中的for循环示例
object MainObject {
def main(args: Array[String]) {
var list = List(1,2,3,4,5,6,7,8,9) // Creating a list
for( i <- list){ // Iterating the list
println(i)
}
}
}
输出:
1
2
3
4
5
6
7
8
9
10
Scala for-each循环遍历集合的示例
在下面的代码中,我们使用了三种for-each循环的方法。根据您的需求,您可以实现其中任何一种。
object MainObject {
def main(args: Array[String]) {
var list = List(1,2,3,4,5,6,7,8,9) // Creating a list
list.foreach{
println // Print each element
}
list.foreach(print)
println
list.foreach((element:Int)=>print(element+" ")) // Explicitly mentioning type of elements
}
}
输出:
1
2
3
4
5
6
7
8
9
123456789
1 2 3 4 5 6 7 8 9
使用 by 关键字的Scala for循环示例
在上面的示例中,我们使用了 by 关键字。 by 关键字用于跳过迭代。当您编写像这样的代码:by 2,意味着此循环将跳过循环的所有偶数迭代。
object MainObject {
def main(args: Array[String]) {
for(i<-1 to 10 by 2){
println(i)
}
}
}
输出:
1
3
5
7
9