8.13. Scala for cycle

发布时间 :2023-11-15 23:00:02 UTC      

A for loop allows you to write a loop control structure that executes a specified number of times.

8.13.1. 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.

8.13.2. 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

8.13.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.

8.13.4. 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

8.13.5. 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.

8.13.6. 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

8.13.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.

8.13.8. 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

Principles, Technologies, and Methods of Geographic Information Systems  102

In recent years, Geographic Information Systems (GIS) have undergone rapid development in both theoretical and practical dimensions. GIS has been widely applied for modeling and decision-making support across various fields such as urban management, regional planning, and environmental remediation, establishing geographic information as a vital component of the information era. The introduction of the “Digital Earth” concept has further accelerated the advancement of GIS, which serves as its technical foundation. Concurrently, scholars have been dedicated to theoretical research in areas like spatial cognition, spatial data uncertainty, and the formalization of spatial relationships. This reflects the dual nature of GIS as both an applied technology and an academic discipline, with the two aspects forming a mutually reinforcing cycle of progress.