В предыдущей главе мы изучили различные циклы, предоставляемые 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 производит следующий вывод.