Учебники

CoffeeScript — Понимания

В предыдущей главе мы изучили различные циклы, предоставляемые CoffeeScript, и его варианты. В дополнение к ним, CoffeeScript предоставляет дополнительные структуры цикла, известные как понимания .

Эти понимания заменяют цикл for в других языках программирования, если мы явно добавим необязательные выражения guard и значение текущего индекса массива. Используя понимания, мы можем выполнять итерации массивов, а также объектов, и понимания, которые итерируют массивы, являются выражениями, и мы можем возвращать их в функции или присваивать переменной.

S.No. Заявление и описание
1 для … в понимании

Понимание for..in является основной формой понимания в CoffeeScript, с помощью которой мы можем перебирать элементы списка или массива.

2 для … понимания

Как и массивы, CoffeeScriptScript предоставляет контейнеры для хранения пар ключ-значение, известных как объекты. Мы можем выполнять итерации объектов, используя for..of пониманий, предоставляемых CoffeeScript.

3 список пониманий

Понимания списка в CoffeeScript используются для сопоставления массива объектов с другим массивом.

Понимание for..in является основной формой понимания в CoffeeScript, с помощью которой мы можем перебирать элементы списка или массива.

Как и массивы, CoffeeScriptScript предоставляет контейнеры для хранения пар ключ-значение, известных как объекты. Мы можем выполнять итерации объектов, используя for..of пониманий, предоставляемых CoffeeScript.

Понимания списка в CoffeeScript используются для сопоставления массива объектов с другим массивом.

Индекс понимания

Список / массив элементов имеет индекс, который можно использовать в понимании. Вы можете использовать его в понимании, используя переменную, как показано ниже.

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

пример

Следующий пример демонстрирует использование индекса for… в понимании в CoffeeScript. Сохранить этот код в файле с именем for_in_index.coffee

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

Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.

c:\> coffee -c for_in_index.coffee

При компиляции он дает вам следующий 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);

Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.

c:\> coffee for_in_index.coffee

При выполнении файл CoffeeScript производит следующий вывод.

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 

Постфиксная форма понимания

Как и в случае с постфиксом, если и если , CoffeeScript предоставляет постфиксную форму «Понимания», которая пригодится при написании кода. Используя это, мы можем записать понимание for..in в одну строку, как показано ниже.

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

показать пример

Присвоение переменной

Понимание, которое мы используем для итерации массивов, может быть присвоено переменной, а также возвращено функцией.

пример

Рассмотрим пример, приведенный ниже. Здесь вы можете заметить, что мы извлекли элементы массива, используя for..in, и присвоили его переменной с именем names . И у нас также есть функция, которая явно возвращает понимание, используя ключевое слово return . Сохранить этот код в файле с именем example.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() 

Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.

c:\> coffee -c example.coffee

При компиляции он дает вам следующий 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);

Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.

c:\> coffee example.coffee

При выполнении файл CoffeeScript производит следующий вывод.

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

Ключевое слово

CoffeeScript предоставляет диапазоны для определения списка элементов. Например, диапазон [1..10] эквивалентен [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], где каждый элемент увеличивается на 1. Мы также можем изменить это приращение используя ключевое слово по пониманиям.

пример

В следующем примере демонстрируется использование ключевого слова by для понимания for..in, предоставляемого CoffeeScript. Сохранить этот код в файле с именем by_keyword_example.coffee

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

Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.

c:\> coffee -c by_keyword_example.coffee

При компиляции он дает вам следующий 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);

Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.

c:\> coffee by_keyword_example.coffee

При выполнении файл CoffeeScript производит следующий вывод.