理论教育 for循环语句的使用方法和注意事项

for循环语句的使用方法和注意事项

时间:2023-06-14 理论教育 版权反馈
【摘要】:for 循环是Scala 一个非常强大的控制结构,不仅提供了迭代集合的能力,还提供过滤选项和生成新集合的能力。Scala 没有采用传统的for这种语句结构,而是采用了for 。遍历从1 到5 的集合,可以使用语句:在for 循环的变量之前并没有定义变量i,但是却可以使用。

for循环语句的使用方法和注意事项

for 循环是Scala 一个非常强大的控制结构,不仅提供了迭代集合的能力,还提供过滤选项和生成新集合的能力。Scala 没有采用传统的for(初始化变量;判断条件;更新变量)这种语句结构,而是采用了for (变量 <-表达式)。<-用于遍历一个集合,变量<-表达式称为生成器表达式,它从集合中生成单个值。

遍历从1 到5 的集合,可以使用语句:

在for 循环的变量之前并没有定义变量i,但是却可以使用。Scala 默认i 的类型是集合元素类型,i 的作用域一直持续到循环结束,在这之后访问则提示变量i 未定义,如图7-9 所示:

图7-9 变量i 未定义

打印字符串所有元素,则可以通过如图7-10 方法完成:

图7-10 打印字符串

还可以使用间接调用,但是不常用,如图7-11 所示:

图7-11 间接调用打印字符串

一、for 循环的嵌套

可以在for循环括号里同时包含多组” 变量 <- 表达式 “结构,组之间用分号分隔,如图7-12 所示:

图7-12 for 循环嵌套

该写法等同下列语句,如图7-13 所示:

图7-13 for 循环嵌套(www.daowen.com)

二、for 语句和if 条件结合过滤部分循环

在for 循环中每个生成器都可以带if 判断来过滤想要的元素,此时的if 判断也被称为守卫。如图7-14 打印从1 到5 且不等于2 的元素值:

图7-14 带if 的for 循环

其中if 的判断条件并没有加小括号也不用在前面加分号,这在语法上是允许的。守卫跟在哪个生成器后面就对哪个生成器起作用,如图7-15 所示:

图7-15 带for 循环嵌套的if 判断

每个生成器可以带多个守卫,例如求1 到20 能同时被2 和3 整除的数,结果如图7-16 所示,其中两个守卫之间需要用分号分隔,但对于i 需要同时满足这两个条件方可。

图7-16 带多个if 的for 循环

三、for 推导式

如果for 循环以yield 开始,则该循环体会构造一个集合,每次迭代生成集合中的一个值,这类循环称作for 推导式。

如图7-17 所示,i 从集合分别取值1,3,5,7,9,然后对其*2+1 生成一个新的集合,用于后续的其他处理。

图7-17 for 推导式

Scala 并没有提供break 或continue 语句来退出循环,如果想要退出循环需要设置一布尔值变量控制。例如,打印从1 到10 的整数,但如果i 等于3 则退出,结果如图7-18 所示:

图7-18 for 循环退出

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈