Bucle For en Scala

En Scala, el bucle for también se conoce como comprensiones for. Un bucle for es una estructura de control de repetición que nos permite escribir un bucle que se ejecuta un número específico de veces. El bucle nos permite realizar n número de pasos juntos en una línea. 

Sintaxis: 

for(w <- range){
// Code..
}

Aquí, w es una variable, el operador <- se conoce como generador, según el nombre, este operador se usa para generar valores individuales del rango, y el rango es el valor que contiene los valores inicial y final. El rango se puede representar usando i a j o i hasta j. 

bucle for usando to

En for loop, podemos usar to cuando queremos imprimir los valores de 0 a n. O, en otras palabras, cuando usamos to with for loop incluye tanto el valor inicial como el final como se muestra en el siguiente programa, se imprime de 0 a 10, no se imprime de 0 a 9 como hasta. 

Ejemplo:  

Scala

// Scala program to illustrate how to
// create for loop using to
object Main
{
    def main(args: Array[String])
    {
        println("The value of w is:");
         
        // Here, the for loop starts from 0
        // and ends at 10
        for( w <- 0 to 10)
        {
            println(w);
        }
    }
}

Producción: 

The value of w is:
0
1
2
3
4
5
6
7
8
9
10

bucle for usando hasta

En for loop, podemos usar hasta cuando queremos imprimir el valor de 0 a n-1. O en otras palabras, hasta que con for loop excluya el valor final como se muestra en el siguiente programa, imprime solo de 0 a 9, no imprime de 0 a 10. 

Ejemplo:  

Scala

// Scala program to illustrate how to
// create for loop using until
object Main
{
    def main(args: Array[String])
    {
        println("The value of w is:");
         
        // Here, the for loop starts from 0
        // and ends at 10
        for( w <- 0 until 10)
        {
            println(w);
        }
    }
}

Producción: 

The value of w is:
0
1
2
3
4
5
6
7
8
9

Múltiples valores en for-loop

También podemos usar múltiples rangos en un solo ciclo for. Estos rangos están separados por un punto y coma (;). Vamos a discutir con la ayuda de un ejemplo. En el siguiente ejemplo, usamos dos rangos diferentes en un solo bucle, es decir, w <- 0 a 3; z<- 8 hasta 10. 

Ejemplo:  

Scala

// Scala program to illustrate how to
// create multiple ranges in for loop
object Main
{
    def main(args: Array[String])
    {
         
    // for loop with multiple ranges
        for( w <- 0 to 3; z<- 8 until 10 )
        {
            println("Value of w is :" +w);
            println("Value of y is :" +z);
        }
    }
}

Producción: 

Value of w is :0
Value of y is :8
Value of w is :0
Value of y is :9
Value of w is :1
Value of y is :8
Value of w is :1
Value of y is :9
Value of w is :2
Value of y is :8
Value of w is :2
Value of y is :9
Value of w is :3
Value of y is :8
Value of w is :3
Value of y is :9

Usando for-loop con Colecciones

En Scala, podemos usar for-loop con colecciones como List, etc. Proporciona una forma eficiente de iterar sobre las colecciones. 

Sintaxis:  

for(i <- List){
// Code..
}

Ejemplo: 

Scala

// Scala program to illustrate how to
// use for loop with collection
object Main
{
    def main(args: Array[String])
    {
        var rank = 0;
        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
         
        // For loop with collection
        for( rank <- ranklist){
            println("Author rank is : " +rank);
        }
    }
}

Producción: 

Author rank is : 1
Author rank is : 2
Author rank is : 3
Author rank is : 4
Author rank is : 5
Author rank is : 6
Author rank is : 7
Author rank is : 8
Author rank is : 9
Author rank is : 10

Usando for-loop con filtros

En Scala, for-loop le permite filtrar algunos elementos de la colección dada usando una o más declaraciones if en for-loop. 

Sintaxis:  

for(i<- List 
if condition1; if condition2; if condition3; ...)
{
// code..
}

Ejemplo:  

Scala

// Scala program to illustrate how to
// use for loop with filters
object Main
{
    def main(args: Array[String])
    {
        var rank = 0;
        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
         
        // For loop with filters
        for( rank <- ranklist
        if rank < 7; if rank > 2 )
        {
            println("Author rank is : " +rank);
        }
    }
}

Producción: 

Author rank is : 3
Author rank is : 4
Author rank is : 5
Author rank is : 6

Explicación: En el ejemplo anterior, el ciclo for usa dos filtros para filtrar la colección dada. Estos filtros eliminan aquellos rangos que son menores de 7 y mayores de 2.

Usando for-loop con Yield

En Scala, el valor de retorno del ciclo for se almacena en una variable o puede regresar a través de una función. Para hacer esto, debe usar la palabra clave yield como prefijo del cuerpo del ciclo for. 

Sintaxis:  

var output = for{ i<- List
if condition 1; if condition 2; 
} 
yield i

Ejemplo:  

Scala

// Scala program to illustrate how to
// use for loop with yields
object Main
{
    def main(args: Array[String])
    {
        var rank = 0;
        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
         
        // For loop with yields
        var output = for{ rank <- ranklist
                    if rank > 4; if rank != 8 }
                    yield rank
         
        // Display result
        for (rank <- output)
        {
            println("Author rank is : " + rank);
        }
    }
}

Producción: 

Author rank is : 5
Author rank is : 6
Author rank is : 7
Author rank is : 9
Author rank is : 10

Explicación: En el ejemplo anterior, la salida es una variable donde todos los valores de rango se almacenan en forma de colección. Y el bucle for muestra solo el rango del autor cuyo rango es mayor que 4 y no igual al rango 8.
 

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *