CoffeeScript - Comprehensions

No capítulo anterior, aprendemos vários loops fornecidos pelo CoffeeScript, whilee suas variantes. Além desses, CoffeeScript fornece estruturas de loop adicionais conhecidas comocomprehensions.

Essas compreensões substituem o forloop em outras linguagens de programação, se adicionarmos as cláusulas de guarda opcionais e o valor do índice da matriz atual explicitamente. Usando compreensões, podemos iterar arrays, bem como objetos, e as compreensões de que os arrays iterados são expressões, e podemos retorná-los em uma função ou atribuí-los a uma variável.

S.No. Declaração e descrição
1 para .. em compreensões

o for..in compreensão é a forma básica de compreensão em CoffeeScript, usando-a, podemos iterar os elementos de uma lista ou array.

2 para .. de compreensões

Assim como Arrays, o CoffeeScriptScript fornece recipientes para armazenar pares de valores-chave conhecidos como objetos. Podemos iterar objetos usando ofor..of compreensões fornecidas por CoffeeScript.

3 list comprehensions

o list compreensões em CoffeeScript são usadas para mapear uma matriz de objetos para outra matriz.

Índice de compreensões

A lista / array de elementos possui um índice que pode ser usado em compreensões. Você pode usá-lo em compreensões usando uma variável conforme mostrado abaixo.

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

Exemplo

O exemplo a seguir demonstra o uso do índice do for…incompreensão em CoffeeScript. Salve este código em um arquivo com o nomefor_in_index.coffee

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

Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.

c:\> coffee -c for_in_index.coffee

Na compilação, ele fornece o seguinte 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);

Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.

c:\> coffee for_in_index.coffee

Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.

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 pós-fixada de compreensões

Assim como o Postfix if e unless, CoffeeScript fornece a forma pós-fixada de Comprehensions que é útil ao escrever o código. Usando isso, podemos escrever ofor..in compreensão em uma única linha conforme mostrado a seguir.

#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 exemplo

Atribuindo a uma variável

A compreensão que usamos para iterar arrays pode ser atribuída a uma variável e também retornada por uma função.

Exemplo

Considere o exemplo abaixo. Aqui você pode observar que recuperamos os elementos de uma matriz usandofor..in compreensão e atribuiu isso a uma variável chamada names. E também temos uma função que retorna uma compreensão explicitamente usando oreturnpalavra-chave. Salve este código em um arquivo com o 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()

Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.

c:\> coffee -c example.coffee

Na compilação, ele fornece o seguinte 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);

Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.

c:\> coffee example.coffee

Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.

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

A por palavra-chave

CoffeeScript fornece intervalos para definir uma lista de elementos. Por exemplo, o intervalo [1..10] é equivalente a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] onde, cada elemento é incrementado em 1. Também podemos alterar este incremento usando oby palavra-chave de compreensões.

Exemplo

O exemplo a seguir demonstra o uso do by palavra-chave do for..incompreensão fornecida por CoffeeScript. Salve este código em um arquivo com o nomeby_keyword_example.coffee

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

Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.

c:\> coffee -c by_keyword_example.coffee

Na compilação, ele fornece o seguinte 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);

Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.

c:\> coffee by_keyword_example.coffee

Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.

[ 1, 3, 5, 7, 9 ]