CoffeeScript - Comprensioni

Nel capitolo precedente, abbiamo imparato vari cicli forniti da CoffeeScript, whilee le sue varianti. Oltre a questi, CoffeeScript fornisce strutture di loop aggiuntive note comecomprehensions.

Queste comprensioni sostituiscono forloop in altri linguaggi di programmazione, se aggiungiamo esplicitamente le clausole guard opzionali e il valore dell'indice dell'array corrente. Usando le comprensioni, possiamo iterare sia gli array che gli oggetti e le comprensioni che iterano gli array sono espressioni e possiamo restituirli in una funzione o assegnarli a una variabile.

S.No. Dichiarazione e descrizione
1 per ... nelle comprensioni

Il for..in la comprensione è la forma base di comprensione in CoffeeScript, usando questo possiamo iterare gli elementi di una lista o di un array.

2 per .. di comprensioni

Proprio come gli array, CoffeeScriptScript fornisce un contenitore per archiviare coppie chiave-valore note come oggetti. Possiamo iterare oggetti usando ilfor..of comprensioni fornite da CoffeeScript.

3 list comprehensions

Il list le comprensione in CoffeeScript vengono utilizzate per mappare un array di oggetti su un altro array.

Indice di comprensione

La lista / matrice di elementi ha un indice che può essere utilizzato nelle comprensioni. Puoi usarlo nelle comprensioni usando una variabile come mostrato di seguito.

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

Esempio

L'esempio seguente mostra l'utilizzo dell'indice di for…incomprensione in CoffeeScript. Salva questo codice in un file con nomefor_in_index.coffee

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

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c for_in_index.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee for_in_index.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

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 di comprensione con suffisso

Proprio come postfix if e unless, CoffeeScript fornisce la forma postfissa delle Comprehensions che è utile durante la scrittura del codice. Usando questo, possiamo scrivere il filefor..in comprensione in una singola riga come mostrato di seguito.

#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}
mostra un esempio

Assegnazione a una variabile

La comprensione che usiamo per iterare gli array può essere assegnata a una variabile e restituita anche da una funzione.

Esempio

Considera l'esempio fornito di seguito. Qui puoi osservare che abbiamo recuperato gli elementi di un array usandofor..in comprensione e assegnata a una variabile denominata names. E abbiamo anche una funzione che restituisce una comprensione utilizzando esplicitamente ilreturnparola chiave. Salva questo codice in un file con nomeexample.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()

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c example.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee example.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

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

La parola chiave

CoffeeScript fornisce intervalli per definire un elenco di elementi. Ad esempio, l'intervallo [1..10] è equivalente a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] dove ogni elemento viene incrementato di 1. Possiamo anche modificare questo incremento usando ilby parola chiave di comprensione.

Esempio

L'esempio seguente mostra l'utilizzo di by parola chiave del for..incomprensione fornita da CoffeeScript. Salva questo codice in un file con nomeby_keyword_example.coffee

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

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c by_keyword_example.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee by_keyword_example.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

[ 1, 3, 5, 7, 9 ]