В предыдущей главе мы видели массивы в CoffeeScript, а при программировании мы столкнемся с некоторыми сценариями, в которых мы должны хранить последовательность числовых значений в массиве, как показано ниже.
numbers =[1,2,3,4,5,6,7,8,9,10]
CoffeeScript обеспечивает более короткий способ выражения массивов, содержащих последовательность числовых значений, известных как диапазоны . Эта особенность CoffeeScript основана на Ruby.
Синтаксис
Диапазоны создаются двумя числовыми значениями, первой и последней позициями в диапазоне, разделенными .. или …. С двумя точками (1..4) диапазон включительно (1, 2, 3, 4); с тремя точками (1 … 4) диапазон исключает конец (1, 2, 3).
Ниже приведен синтаксис диапазонов в CoffeeScript. Мы определим значения в диапазоне между квадратными скобками [], как массивы. В диапазонах, сохраняя последовательность числовых значений, вместо предоставления значений всей последовательности, мы можем просто указать ее начальное и конечное значения, разделенные двумя точками ( .. ), как показано ниже.
range =[Begin..End]
пример
Вот пример диапазонов в CoffeeScript. Сохраните это в файле с именем range_example.coffee .
numbers =[0..9] console.log "The contents of the range are: "+ numbers
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c ranges_example.coffee
При компиляции он дает вам следующий JavaScript. Здесь вы можете заметить, что диапазон преобразуется в полный массив CoffeeScript.
// Generated by CoffeeScript 1.10.0 (function() { var numbers; numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log("The contents of the range are:: " + numbers); }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee ranges_example.coffee
При выполнении файл CoffeeScript производит следующий вывод.
The contents of the range are:: 0,1,2,3,4,5,6,7,8,9
Исключая конечное значение
Диапазоны составляются в полные массивы, содержащие все числа. Если мы хотим исключить конечное значение, то мы должны разделить начальный и конечный элементы диапазона, используя три точки ( … ), как показано ниже.
range =[Begin...End]
пример
Мы можем переписать приведенный выше пример, исключив конечное значение, как показано ниже. Сохраните следующее содержимое в файле с именем range_exclusive_end.coffee.
numbers =[0...9] console.log "The contents of the range are:: "+ numbers
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c ranges_example.coffee
При компиляции он дает вам следующий JavaScript.
// Generated by CoffeeScript 1.10.0 (function() { var numbers; numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8]; console.log("The contents of the range are:: " + numbers); }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee ranges_example.coffee
При выполнении файл CoffeeScript производит следующий вывод. Здесь вы можете заметить, что конечное значение 9 исключено.
The contents of the range are:: 0,1,2,3,4,5,6,7,8
Использование диапазонов с переменными
Мы также можем определить диапазон, назначив начальные и конечные значения переменным.
пример
Рассмотрим следующий пример. Здесь мы определили диапазон, используя переменные. Сохранить этот код в файле с именем range_variables.coffee
start=0 end=9 numbers =[start..end] console.log "The contents of the range are: "+ numbers
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c range_variables.coffee
При компиляции он дает вам следующий JavaScript.
// Generated by CoffeeScript 1.10.0 (function() { var end, i, numbers, results, start; start = 0; end = 9; numbers = (function() { results = []; for (var i = start; start <= end ? i <= end : i >= end; start <= end ? i++ : i--) { results.push(i); } return results; }).apply(this); console.log("The contents of the range are:: " + numbers); }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee range_variables.coffee
При выполнении файл CoffeeScript производит следующий вывод. Здесь вы можете заметить, что конечное значение 9 исключено.
The contents of the range are:: 0,1,2,3,4,5,6,7,8,9
Диапазоны с массивами
Мы можем нарезать массивы, используя их с диапазонами. Когда бы мы ни указывали диапазоны сразу после массивов (переменных), компилятор CoffeeScript преобразует их в вызов метода slice () JavaScript.
Предположим, что у нас есть массив с числовыми значениями, скажем, от 0 до 9, тогда мы можем получить первые 4 элемента из него, как показано ниже.
num = [1, 2, 3, 4, 5, 6, 7, 8, 9] data = num[0..5]
Отрицательные значения представляют элементы с конца, например, -1 указывает на 9. Если мы укажем отрицательное число 3, за которым следуют две точки, будут извлечены последние три элемента массива.
data = num[-3..]
Если мы указываем только две точки в диапазоне массива как num [..] , то весь массив будет извлечен. Мы также можем заменить сегмент массива другими элементами, используя диапазоны, как показано ниже.
num[2..6] = [13,14,15,16,17]
пример
В следующем примере демонстрируется использование диапазонов с массивами. Сохранить этот код в файле с именем range_arrays.coffee
#slicing an array using ranges num = [1, 2, 3, 4, 5, 6, 7, 8, 9] data = num[0..5] console.log "The first four elements of the array : "+data #Using negative values data = num[-3..] console.log "The last 3 elements of the array : "+data #Extracting the whole array console.log "Total elements of the array : "+num[..] #Replacing the elements of an array num[2..6] = [13,14,15,16,17] console.log "New array : "+num
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c range_arrays.coffee
При компиляции он дает вам следующий JavaScript. Здесь вы можете заметить, что все диапазоны преобразуются в вызовы метода slice () JavaScript.
// Generated by CoffeeScript 1.10.0 (function() { var data, num, ref; num = [1, 2, 3, 4, 5, 6, 7, 8, 9]; data = num.slice(0, 6); console.log("The first four elements of the array : " + data); data = num.slice(-3); console.log("The last 3 elements of the array : " + data); console.log("Total elements of the array : " + num.slice(0)); [].splice.apply(num, [2, 5].concat(ref = [13, 14, 15, 16, 17])), ref; console.log("New array : " + num); }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee range_arrays.coffee
При выполнении файл CoffeeScript производит следующий вывод. Здесь вы можете заметить, что конечное значение 9 исключено.
The first four elements of the array : 1,2,3,4,5,6 The last 3 elements of the array : 7,8,9 Total elements of the array : 1,2,3,4,5,6,7,8,9 New array : 1,2,13,14,15,16,17,8,9
Диапазоны со строками
Мы также можем использовать диапазоны со строками. Если мы указываем диапазоны после Strings, то CoffeeScript разрезает их и возвращает новое подмножество символов.
пример
В следующем примере демонстрируется использование диапазонов со строками. Здесь мы создали строку и извлекли из нее подстроку, используя диапазоны. Сохранить этот код в файл с именем range_with_strings.coffee
my_string = "Welcome to tutorialspoint" new_string = my_string[0..10] console.log new_string
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c ranges_with_strings.coffee
При компиляции он дает вам следующий JavaScript.
// Generated by CoffeeScript 1.10.0 (function() { var my_string, new_string; my_string = "Welcome to tutorialspoint"; new_string = my_string.slice(0, 6); console.log(new_string); }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee ranges_with_strings.coffee
При выполнении файл CoffeeScript производит следующий вывод. Здесь вы можете заметить, что конечное значение 9 исключено.
Welcome to
Понимание по диапазонам
Как объекты и массивы, мы также можем перебирать элементы диапазона, используя понимания.
пример
Ниже приведен пример использования понимания по диапазонам. Здесь мы создали диапазон и извлекли элементы в нем, используя понимания. Сохраните этот код в файле с именем comppresions_over_ranges.coffee
numbers =[0..9] console.log "The elements of the range are: " console.log num for num in numbers
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c comprehensions_over_ranges.coffee
При компиляции он дает вам следующий JavaScript.
// Generated by CoffeeScript 1.10.0 (function() { var i, len, num, numbers; numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log("The elements of the range are: "); for (i = 0, len = numbers.length; i < len; i++) { num = numbers[i]; console.log(num); } }).call(this);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee comprehensions_over_ranges.coffee
При выполнении файл CoffeeScript производит следующий вывод. Здесь вы можете заметить, что конечное значение 9 исключено.
The elements of the range are: 0 1 2 3 4 5 6 7 8
Таким же образом мы также можем изменить это приращение, используя ключевое слово by для понимания.