Scala for cycle
A for
loop allows you to write a loop control structure that executes a specified number of times.
Grammar
In Scala language for
the syntax of the loop:
for( var x <- Range ){
statement(s);
}
In the above grammar Range
can be a number interval representation. i to j
, or i until j
. The left arrow <-is used to assign values to thevariable x.
Example
The following is an example that uses the i to j
an example of the syntax (including j):
Example
object Test {
def main(args: Array[String]) {
var a = 0;
// for loop
for( a <- 1 to 10){
println( "Value of a: " + a );
}
}
}
The output result of executing the above code is:
$ 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
The following is an example that uses the i until j
an example of the syntax (excluding j):
Example
object Test {
def main(args: Array[String]) {
var a = 0;
// for loop
for( a <- 1 until 10){
println( "Value of a: " + a );
}
}
}
The output result of executing the above code is:
$ 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
In for
the loop you can use the semicolon (;) to set multiple intervals, which will iterate over all possible values for a given interval.The following example shows an example of a loop in two intervals:
Example
object Test {
def main(args: Array[String]) {
var a = 0;
var b = 0;
// for loop
for( a <- 1 to 3; b <- 1 to 3){
println( "Value of a: " + a );
println( "Value of b: " + b );
}
}
}
The output result of executing the above code is:
$ 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
Cyclic set
The for
syntax for a loop collection is as follows:
for( x <- List ){
statement(s);
}
In the above grammar List
a variable is a collection, and the for
loop iterates over the elements of all collections.
Example
The following example loops a collection of numbers. We use List()
to create a collection. We will describe the collection in detail in later chapters.
Example
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6);
// for loop
for( a <- numList ){
println( "Value of a: " + a );
}
}
}
The output result of executing the above code is:
$ 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
Cyclic filtration
Scala can use one or more if
statement to filter some elements.
The following is in for
the syntax for using filters in a loop.
for( var x <- List
if condition1; if condition2...
){
statement(s);
}
You can use the semicolon (;) to add one or more filter criteria to the expression.
Example
The following is for
instances filtered in the loop:
Example
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for loop
for( a <- numList
if a != 3; if a < 8 ){
println( "Value of a: " + a );
}
}
}
The output result of executing the above code is:
$ 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 uses yield
You can put for
the return value of the loop is stored as a variable. The syntax format is as follows:
var retVal = for{ var x <- List
if condition1; if condition2...
}yield x
Note that curly braces are used to hold variables and conditions retVal
,it’s a variable, in a loop. yield
the current element is written down and saved in the collection, which is returned at the end of the loop.
Example
The following example demonstrates for
use in a loop yield
:
Example
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for loop
var retVal = for{ a <- numList
if a != 3; if a < 8
}yield a
// Output return value
for( a <- retVal){
println( "Value of a: " + a );
}
}
}
The output result of executing the above code is:
$ 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