CoffeeScript - Comprensiones

En el capítulo anterior, hemos aprendido varios bucles proporcionados por CoffeeScript, whiley sus variantes. Además de esos, CoffeeScript proporciona estructuras de bucle adicionales conocidas comocomprehensions.

Estas comprensiones reemplazan forloop en otros lenguajes de programación, si agregamos las cláusulas de protección opcionales y el valor del índice de matriz actual explícitamente. Usando comprensiones, podemos iterar matrices así como objetos y las comprensiones que iteran matrices son expresiones, y podemos devolverlas en una función o asignarlas a una variable.

S.No. Declaración y descripción
1 para..en comprensiones

los for..in la comprensión es la forma básica de comprensión en CoffeeScript, usando esto podemos iterar los elementos de una lista o matriz.

2 para..de comprensiones

Al igual que Arrays, CoffeeScriptScript proporciona contenedores para almacenar pares clave-valor conocidos como objetos. Podemos iterar objetos usando elfor..of comprensiones proporcionadas por CoffeeScript.

3 list comprehensions

los list Las comprensiones en CoffeeScript se utilizan para mapear una matriz de objetos a otra matriz.

Índice de comprensiones

La lista / matriz de elementos tiene un índice que puede usarse en comprensiones. Puede usarlo en comprensiones usando una variable como se muestra a continuación.

for student,i in [element1, element2, element3]

Ejemplo

El siguiente ejemplo demuestra el uso del índice del for…incomprensión en CoffeeScript. Guarde este código en un archivo con nombrefor_in_index.coffee

for student,i in ['Ram', 'Mohammed', 'John']
   console.log "The name of the student with id "+i+" is: "+student

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

c:\> coffee -c for_in_index.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var i, j, len, ref, student;

  ref = ['Ram', 'Mohammed', 'John'];
  for (i = j = 0, len = ref.length; j < len; i = ++j) {
    student = ref[i];
    console.log("The name of the student with id " + i + " is: " + student);
  }
}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

c:\> coffee for_in_index.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

The name of the student with id 0 is: Ram
The name of the student with id 1 is: Mohammed
The name of the student with id 2 is: John

Forma postfija de comprensiones

Al igual que postfix if y unlessCoffeeScript proporciona la forma de sufijo de las comprensiones que resulta útil al escribir el código. Usando esto, podemos escribir elfor..in comprensión en una sola línea como se muestra a continuación.

#Postfix for..in comprehension
console.log student for student in ['Ram', 'Mohammed', 'John']

#postfix for..of comprehension
console.log key+"::"+value for key,value of { name: "Mohammed", age: 24, phone: 9848022338}
mostrar ejemplo

Asignar a una variable

La comprensión que usamos para iterar matrices puede asignarse a una variable y también ser devuelta por una función.

Ejemplo

Considere el ejemplo que se da a continuación. Aquí puede observar que hemos recuperado los elementos de una matriz usandofor..in comprensión y asignó esto a una variable llamada names. Y también tenemos una función que devuelve una comprensión utilizando explícitamente elreturnpalabra clave. Guarde este código en un archivo con nombreexample.coffee

my_function =->
   student = ['Ram', 'Mohammed', 'John']
   
   #Assigning comprehension to a variable
   names = (x for x in student )
   console.log "The contents of the variable names are ::"+names
   
   #Returning the comprehension
   return x for x in student
console.log "The value returned by the function is "+my_function()

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

c:\> coffee -c example.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var my_function;

  my_function = function() {
    var i, len, names, student, x;
    student = ['Ram', 'Mohammed', 'John'];
    names = (function() {
      var i, len, results;
      results = [];
      for (i = 0, len = student.length; i < len; i++) {
        x = student[i];
        results.push(x);
      }
      return results;
    })();
    console.log("The contents of the variable names are ::" + names);
    for (i = 0, len = student.length; i < len; i++) {
      x = student[i];
      return x;
    }
  };

  console.log("The value returned by the function is " + my_function());

}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

c:\> coffee example.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

The contents of the variable names are ::Ram,Mohammed,John
The value returned by the function is Ram

Por palabra clave

CoffeeScript proporciona rangos para definir una lista de elementos. Por ejemplo, el rango [1..10] es equivalente a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] donde, cada elemento se incrementa en 1. También podemos cambiar este incremento utilizando elby palabra clave de comprensiones.

Ejemplo

El siguiente ejemplo demuestra el uso de la by palabra clave del for..incomprensión proporcionada por CoffeeScript. Guarde este código en un archivo con nombreby_keyword_example.coffee

array = (num for num in [1..10] by 2)
console.log array

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

c:\> coffee -c by_keyword_example.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var array, num;

  array = (function() {
    var i, results;
    results = [];
    for (num = i = 1; i <= 10; num = i += 2) {
      results.push(num);
    }
    return results;
  })();

  console.log(array);

}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

c:\> coffee by_keyword_example.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

[ 1, 3, 5, 7, 9 ]