Scala for循环示例

本文深入讲解Scala中的for循环,包括基本语法、不同形式的for循环示例,如使用范围、集合、过滤条件以及yield关键字的for循环。通过具体示例展示如何在Scala中灵活运用for循环进行高效编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

for循环是一种重复控制结构,允许你高效地编写需要执行特定次数的循环。下面的示例以各种形式描述了Scala中的for循环。

语法——带范围的for循环(for loop with ranges)

在Scala里,最简单的带范围的for循环语法如下:

for( var x <- Range ){
   statement(s);
}

以上语法中,Range是一个以i to j或者i until j表示的数值范围,左箭头操作符<-称作生成器,因为它从一个范围内生成单独的值。

以下是用Scala实现的for循环的示例。

示例1:i to j

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      
      // for loop execution with a range
      for( a <- 1 to 10){
         println( "Value of a: " + a );
      }
   }
}

输出:

value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9
value of a: 10

示例2:i util j

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      
      // for loop execution with a range
      for( a <- 1 until 10){
         println( "Value of a: " + a );
      }
   }
}

输出:

value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9

示例3:用分号(;)分隔多个范围

你可以在for循环中使用分号(;)分隔多个范围,在这种情况下,循环将遍历给定范围的所有逻辑。下面是一个只使用两个范围的例子,你也可以使用两个以上的范围:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      var b = 0;
      
      // for loop execution with a range
      for( a <- 1 to 3; b <- 1 to 3){
         println( "Value of a: " + a );
         println( "Value of b: " + b );
      }
   }
}

输出:

Value of a: 1
Value of b: 1
Value of a: 1
Value of b: 2
Value of a: 1
Value of b: 3
Value of a: 2
Value of b: 1
Value of a: 2
Value of b: 2
Value of a: 2
Value of b: 3
Value of a: 3
Value of b: 1
Value of a: 3
Value of b: 2
Value of a: 3
Value of b: 3

示例4:for循环集合

以下是for循环集合的语法:

for( var x <- List ){
   statement(s);
}

在这里,List变量是一个包含元素列表的集合类型,for循环遍历所有元素,每次返回x变量中的一个元素。示例如下:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6);

      // for loop execution with a collection
      for( a <- numList ){
         println( "Value of a: " + a );
      }
   }
}

输出:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6);

      // for loop execution with a collection
      for( a <- numList ){
         println( "Value of a: " + a );
      }
   }
}

示例5:带过滤条件的for循环

Scala的for循环允许用一个或多个if语句过滤出符合条件的元素,以下是语法,可以用分号(;)分隔多个过滤条件:

for( var x <- List
      if condition1; if condition2...
   ){
   statement(s);
}

示例如下:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);

      // for loop execution with multiple filters
      for( a <- numList
           if a != 3; if a < 8 ){
         println( "Value of a: " + a );
      }
   }
}

输出:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);

      // for loop execution with multiple filters
      for( a <- numList
           if a != 3; if a < 8 ){
         println( "Value of a: " + a );
      }
   }
}

示例6: 带yield关键字的for循环

你可以将for循环中的返回值存储在变量中,也可以通过函数返回。为此,你可以在for表达式的主体前面加上关键字yield。下面是语法:

var retVal = for{ var x <- List
   if condition1; if condition2...
}
yield x

注意:大括号用于保存变量和条件,retVal是一个变量,其中x的所有值都将以集合的形式存储。

示例:

object Demo {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);

      // for loop execution with a yield
      var retVal = for{ a <- numList if a != 3; if a < 8 }yield a

      // Now print returned values using another loop.
      for( a <- retVal){
         println( "Value of a: " + a );
      }
   }
}

输出:

value of a: 1
value of a: 2
value of a: 4
value of a: 5
value of a: 6
value of a: 7

编译自:Scala - for Loops

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值