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 ]