Scala 循环
循环
您可能会遇到需要多次执行一段代码的情况。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句使我们可以多次执行一个语句或一组语句。下面给出的是大多数编程语言中循环语句的一般形式-
Scala语言提供了以下类型的循环来处理循环需求。
循环类型 | 描述 |
---|---|
while循环 | 在给定条件为真时重复一个语句或一组语句。它在执行循环体之前测试条件。 |
for循环 | 多次执行一系列语句,并简化管理循环变量的代码。 |
do… while循环 | 它更像while语句,除了它在循环主体的末尾测试条件(do…while循环至少会执行一次)。 |
嵌套循环 | 您可以在任何其他while,for或do..while循环内使用一个或多个循环。 |
while循环
语法:
while(condition){
statement(s);
}
流程图:
这里,要注意的关键是,while循环可能根本不执行。当测试条件第一次并且结果为false时,将跳过循环主体,并执行while循环之后的第一条语句。
范例:
object Demo {
def main(args: Array[String]):Unit = {
// Local variable declaration:
var a = 10;
// while loop execution
while( a < 20 ){
println( "Value of a: " + a );
a = a + 1;
}
}
}
for循环
语法:
for( var x <- Range ){
statement(s);
}
在这里,Range可以是一个数字Range,它表示为i到j或有时像i直到j。左箭头←运算符称为generator,之所以这样命名,是因为它正在生成Range内的各个值。尝试使用以下示例程序来了解Scala编程语言中的循环控制语句(for语句)。
范例:
object Demo {
def main(args: Array[String]):Unit = {
var a = 0;
// for loop execution with a range
for( a <- 1 to 10){
println( "Value of a: " + a );
}
}
}
do…while循环
与for和while循环不同,for和while循环在循环的顶部测试循环条件,而C语言中的do … while循环在循环的底部检查其条件。do…while循环类似于while循环,但事实上,它是保证执行至少一次。
语法:
do {
statement(s);
}
while( condition );
请注意,条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为真,则控制流跳回去do,并且循环中的语句再次执行。重复此过程,直到给定条件变为假。
流程图:
范例:
object Demo {
def main(args: Array[String]):Unit = {
// Local variable declaration:
var a = 10;
// do loop execution
do {
println( "Value of a: " + a );
a = a + 1;
}
while( a < 20 )
}
}
循环控制语句
循环控制语句从其正常顺序更改执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。C支持以下控制语句。
控制声明 | 描述 |
---|---|
break声明 | 终止循环或switch语句,并在循环或switch后立即将执行的语句。 |
break声明
因此,Scala中没有内置的break语句,但是如果你运行的是Scala 2.8+版本,那么就可以使用break语句。当在循环中遇到break语句时,循环立即终止,程序控制在循环之后的下一个语句处恢复。
语法:
// 导入包
import scala.util.control._
// 创建一个break对象,如下所示
val loop = new Breaks;
// 保持循环内部的可breakable,如下所示
loop.breakable {
// 这里开始循环
for(...){
....
// Break will go here
loop.break;
}
}
流程图:
范例:
import scala.util.control._
object Demo {
def main(args: Array[String]):Unit = {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
val loop = new Breaks;
loop.breakable {
for( a <- numList){
println( "Value of a: " + a );
if( a == 4 ){
loop.break;
}
}
}
println( "After the loop" );
}
}
无限循环
如果条件永远不会为假,则循环将变成无限循环。如果您使用的是Scala,则while循环是实现无限循环的最佳方法。以下程序实现了无限循环。
object Demo {
def main(args: Array[String]):Unit = {
var a = 10;
// An infinite loop.
while( true ){
println( "Value of a: " + a );
}
}
}
如果执行上述代码,它将进入无限循环,您可以通过按Ctrl + C键终止。
Value of a: 10
Value of a: 10
Value of a: 10
Value of a: 10
…………….