Scala中的for循环用于多次执行代码块。它执行块n次,其中n由循环开始之前初始化的某个整数指定。这意味着程序员可以事先知道循环要执行的确切时间。
在Scala中,有许多类型的有效for循环具有特定用途,并且可以根据用户需要在代码中使用。他们是,
包含集合的for循环
带过滤器的for循环
有yield的for循环
使用by关键字的for循环
在其计数器的值范围内积分的循环用于使用range的循环。
语法:
for(var i <- Range){ // 要执行的代码... }
这里的范围是一个数字范围。有两种方法可以在for循环中定义范围。
使用to关键字定义范围i到j。
语法:
for(var i <- a to b){ // 预期代码 }
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; print("Print numbers from 5 to 10\n") for( i <- 5 to 10){ print(i + "\n") } } }
输出结果
Print numbers from 5 to 10 5 6 7 8 9 10
代码说明:
在上面的代码中,我们使用了to关键字来定义范围。我们已经初始化了循环变量i。考虑到循环,它需要第一个和最后一个值。它将值从5增加到10,并将i的值增加1。循环从5到10运行,并将每个值打印到屏幕上。
使用直到关键字定义范围,从i到j。
语法:
for(var i <- a until b){ // 预期代码 }
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; print("Print numbers from 5 until 10\n") for( i <- 5 until 10){ print(i + "\n") } } }
输出结果
Print numbers from 5 until 10 5 6 7 8 9
代码说明:
在上面的代码中,我们使用了直到关键字来定义范围。我们已经初始化了循环变量i。它考虑的是第一个值,而不是循环的最后一个值。它将值从5增加到9,并将i的值增加1。循环从5到9运行,并将每个值打印到屏幕上。
集合是事物的容器。该列表是集合的一种,for循环可通过遍历该列表进行工作。
语法:
for(var x <- list_name){ //要执行的代码 }
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; val myList = List(1,2,4,6,9); print("Print numbers of list\n") for( i <- myList){ print(i + "\n") } } }
输出结果
Print numbers of list 1 2 4 6 9
代码说明:
该代码初始化一个循环变量i和一个类型列表myList的集合,该列表包含要迭代的变量。for循环逐个遍历数组,并将该值放入循环变量中。循环变量在每次迭代时打印该值。
您可以将过滤器添加到for循环的迭代中。这将检查一个可选条件,该条件必须为true才能执行代码。
语法:
for(var x <- 1 until 15 if condition ){ //要执行的代码 }
可以使用多种条件来过滤出for循环结果。
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; print("Print numbers from 5 until 20 which are divisible by 3\n") for( i <- 5 until 20 if i%3 == 0 ){ print(i + "\n") } } }
输出结果
Print numbers from 5 until 20 which are divisible by 3 6 9 12 15 18
代码说明:
代码初始化了一个循环变量,该变量将值加1。在执行循环之前,for语句将检查条件。此条件检查循环变量是否可以正确除以3。然后根据该条件执行循环代码块。对于除以3的循环变量的每个值,它都会打印循环变量的值。
产率,当我们需要返回计数器变量与数组变量变量被使用。这意味着yield关键字在每次迭代时都返回计数器变量。
语法:
var forVals = for{var i <- 4 until 35 condition }yields i
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; print("Print numbers from 11 until 15 using yield\n") var forOut = for{ i <- 11 until 15}yield i for(i <- forOut){ print(i + "\n") } } }
输出结果
Print numbers from 11 until 15 using yield 11 12 13 14
示例说明:
上面的代码详细说明了yield变量的用法。它用于将任何集合过滤出为已过滤的集合。Yield变量将循环计数器的值复制到一个存储其所有值的列表。在此,代码已用于循环以遍历列表并打印从11到15的数字。
by关键字用于增加计数器变量的增量。这意味着,通常计数器将增加1,但使用4将增加4。
语法:
for(var x <- 1 to 54 by 5){ //要执行的代码... }
示例
object MyClass { def add(x:Int, y:Int) = x + y; def main(args: Array[String]) { var i = 0; print("Print numbers from 11 until 20 increasing interval by 2\n") for( i <- 11 until 20 by 2){ print(i + "\n") } } }
输出结果
Print numbers from 11 until 20 increasing interval by 2 11 13 15 17 19
代码说明:
代码初始化了一个循环变量,该变量将值加2。by变量用于将计数器增量值增加到特定数字。在本例中,增量值为2。因此,循环每隔11到20输出一次第二个数字。