“Scala for loop”的版本间差异
本页内容
(创建页面,内容为“{{DISPLAYTITLE:for 循环}}3 = Scala for循环 = Scala 循环 for 循环允许您编写一个执行指定次数的循环控制结构。 == 语法 == Scala 语言中 '''for''' 循环的语法: <sample title="" desc="" lang="scala" hererun="1"> for( var x <- Range ){ statement(s); } </sample> 以上语法中,'''Range''' 可以是一个数字区间表示 '''i to j''' ,或者 '''i until j'''。左箭…”) |
无编辑摘要 |
||
第10行: | 第10行: | ||
Scala 语言中 '''for''' 循环的语法: | Scala 语言中 '''for''' 循环的语法: | ||
< | <pre> | ||
for( var x | for( var x <- Range ){ | ||
statement(s); | statement(s); | ||
} | } | ||
</pre> | |||
以上语法中,'''Range''' 可以是一个数字区间表示 '''i to j''' ,或者 '''i until j'''。左箭头 <- 用于为变量 x 赋值。 | 以上语法中,'''Range''' 可以是一个数字区间表示 '''i to j''' ,或者 '''i until j'''。左箭头 <- 用于为变量 x 赋值。 | ||
第21行: | 第21行: | ||
以下是一个使用了 '''i to j''' 语法(包含 j)的实例: | 以下是一个使用了 '''i to j''' 语法(包含 j)的实例: | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第40行: | 第40行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第56行: | 第56行: | ||
value of a: 9 | value of a: 9 | ||
value of a: 10 | value of a: 10 | ||
</pre> | |||
以下是一个使用了 '''i until j''' 语法(不包含 j)的实例: | 以下是一个使用了 '''i until j''' 语法(不包含 j)的实例: | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第78行: | 第78行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第93行: | 第93行: | ||
value of a: 8 | value of a: 8 | ||
value of a: 9 | value of a: 9 | ||
</pre> | |||
在 '''for 循环''' 中你可以使用分号 (;) 来设置多个区间,它将迭代给定区间所有的可能值。以下实例演示了两个区间的循环实例: | 在 '''for 循环''' 中你可以使用分号 (;) 来设置多个区间,它将迭代给定区间所有的可能值。以下实例演示了两个区间的循环实例: | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第119行: | 第119行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第143行: | 第143行: | ||
Value of a: 3 | Value of a: 3 | ||
Value of b: 3 | Value of b: 3 | ||
</pre> | |||
== for 循环集合 == | == for 循环集合 == | ||
第149行: | 第149行: | ||
for 循环集合的语法如下: | for 循环集合的语法如下: | ||
< | <pre> | ||
for( x | for( x <- List ){ | ||
statement(s); | statement(s); | ||
} | } | ||
</pre> | |||
以上语法中, '''List''' 变量是一个集合,for 循环会迭代所有集合的元素。 | 以上语法中, '''List''' 变量是一个集合,for 循环会迭代所有集合的元素。 | ||
第160行: | 第160行: | ||
以下实例将循环数字集合。我们使用 List() 来创建集合。再以后章节我们会详细介绍集合。 | 以下实例将循环数字集合。我们使用 List() 来创建集合。再以后章节我们会详细介绍集合。 | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第181行: | 第181行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第193行: | 第193行: | ||
value of a: 5 | value of a: 5 | ||
value of a: 6 | value of a: 6 | ||
</pre> | |||
== for 循环过滤 == | == for 循环过滤 == | ||
第201行: | 第201行: | ||
以下是在 for 循环中使用过滤器的语法。 | 以下是在 for 循环中使用过滤器的语法。 | ||
< | <pre> | ||
for( var x | for( var x <- List | ||
if condition1; if condition2... | if condition1; if condition2... | ||
){ | ){ | ||
statement(s); | statement(s); | ||
} | } | ||
</pre> | |||
你可以使用分号(;)来为表达式添加一个或多个的过滤条件。 | 你可以使用分号(;)来为表达式添加一个或多个的过滤条件。 | ||
第214行: | 第214行: | ||
以下是 for 循环中过滤的实例: | 以下是 for 循环中过滤的实例: | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第237行: | 第237行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第249行: | 第249行: | ||
value of a: 6 | value of a: 6 | ||
value of a: 7 | value of a: 7 | ||
</pre> | |||
== for 使用 yield == | == for 使用 yield == | ||
第255行: | 第255行: | ||
你可以将 for 循环的返回值作为一个变量存储。语法格式如下: | 你可以将 for 循环的返回值作为一个变量存储。语法格式如下: | ||
< | <pre> | ||
var retVal = for{ var x | var retVal = for{ var x <- List | ||
if condition1; if condition2... | if condition1; if condition2... | ||
}yield x | }yield x | ||
</pre> | |||
注意大括号中用于保存变量和条件,retVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。 | 注意大括号中用于保存变量和条件,retVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。 | ||
第266行: | 第266行: | ||
以下实例演示了 for 循环中使用 yield: | 以下实例演示了 for 循环中使用 yield: | ||
<sample title="" desc="" lang=" | <sample title="" desc="" lang="docker" hererun="1"> | ||
object Test { | object Test { | ||
第295行: | 第295行: | ||
} | } | ||
</sample> | |||
执行以上代码输出结果为: | 执行以上代码输出结果为: | ||
< | <pre> | ||
$ scalac Test.scala | $ scalac Test.scala | ||
$ scala Test | $ scala Test | ||
第307行: | 第307行: | ||
value of a: 6 | value of a: 6 | ||
value of a: 7 | value of a: 7 | ||
</pre> | |||
[[scala loop types|Scala 循环]] | [[scala loop types|Scala 循环]] |
2022年10月14日 (五) 16:51的版本
Scala for循环
for 循环允许您编写一个执行指定次数的循环控制结构。
语法
Scala 语言中 for 循环的语法:
for( var x <- Range ){ statement(s); }
以上语法中,Range 可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。
==
以下是一个使用了 i to j 语法(包含 j)的实例:
示例
object Test {
def main(args: Array[String]) {
var a = 0;
// for 循环
for( a <- 1 to 10){
println( "Value of a: " + a );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test 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
以下是一个使用了 i until j 语法(不包含 j)的实例:
示例
object Test {
def main(args: Array[String]) {
var a = 0;
// for 循环
for( a <- 1 until 10){
println( "Value of a: " + a );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test 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
在 for 循环 中你可以使用分号 (;) 来设置多个区间,它将迭代给定区间所有的可能值。以下实例演示了两个区间的循环实例:
示例
object Test {
def main(args: Array[String]) {
var a = 0;
var b = 0;
// for 循环
for( a <- 1 to 3; b <- 1 to 3){
println( "Value of a: " + a );
println( "Value of b: " + b );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test 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
for 循环集合
for 循环集合的语法如下:
for( x <- List ){ statement(s); }
以上语法中, List 变量是一个集合,for 循环会迭代所有集合的元素。
==
以下实例将循环数字集合。我们使用 List() 来创建集合。再以后章节我们会详细介绍集合。
示例
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6);
// for 循环
for( a <- numList ){
println( "Value of a: " + a );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test value of a: 1 value of a: 2 value of a: 3 value of a: 4 value of a: 5 value of a: 6
for 循环过滤
Scala 可以使用一个或多个 if 语句来过滤一些元素。
以下是在 for 循环中使用过滤器的语法。
for( var x <- List if condition1; if condition2... ){ statement(s); }
你可以使用分号(;)来为表达式添加一个或多个的过滤条件。
==
以下是 for 循环中过滤的实例:
示例
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 循环
for( a <- numList
if a != 3; if a < 8 ){
println( "Value of a: " + a );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test value of a: 1 value of a: 2 value of a: 4 value of a: 5 value of a: 6 value of a: 7
for 使用 yield
你可以将 for 循环的返回值作为一个变量存储。语法格式如下:
var retVal = for{ var x <- List if condition1; if condition2... }yield x
注意大括号中用于保存变量和条件,retVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。
==
以下实例演示了 for 循环中使用 yield:
示例
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 循环
var retVal = for{ a <- numList
if a != 3; if a < 8
}yield a
// 输出返回值
for( a <- retVal){
println( "Value of a: " + a );
}
}
}
执行以上代码输出结果为:
$ scalac Test.scala $ scala Test value of a: 1 value of a: 2 value of a: 4 value of a: 5 value of a: 6 value of a: 7