前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala for循环示例

Scala for循环示例

作者头像
九州暮云
发布2019-08-21 10:53:33
1.2K0
发布2019-08-21 10:53:33
举报
文章被收录于专栏:九州牧云九州牧云

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

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

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

代码语言:javascript
复制
for( var x <- Range ){
   statement(s);
}

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

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

示例1:i to j

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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循环中使用分号(;)分隔多个范围,在这种情况下,循环将遍历给定范围的所有逻辑。下面是一个只使用两个范围的例子,你也可以使用两个以上的范围:

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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循环集合的语法:

代码语言:javascript
复制
for( var x <- List ){
   statement(s);
}

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

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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语句过滤出符合条件的元素,以下是语法,可以用分号(;)分隔多个过滤条件:

代码语言:javascript
复制
for( var x <- List
      if condition1; if condition2...
   ){
   statement(s);
}

示例如下:

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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。下面是语法:

代码语言:javascript
复制
var retVal = for{ var x <- List
   if condition1; if condition2...
}
yield x

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

示例:

代码语言:javascript
复制
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 );
      }
   }
}

输出:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法——带范围的for循环(for loop with ranges)
  • 示例1:i to j
  • 示例2:i util j
  • 示例3:用分号(;)分隔多个范围
  • 示例4:for循环集合
  • 示例5:带过滤条件的for循环
  • 示例6: 带yield关键字的for循环
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档