CoffeeScript - Диапазоны
В предыдущей главе мы видели массивы в CoffeeScript, а при программировании мы столкнемся с некоторыми сценариями, в которых нам нужно сохранить последовательность числовых значений в массиве, как показано ниже.
numbers =[1,2,3,4,5,6,7,8,9,10]
CoffeeScript обеспечивает более короткий способ выражения массивов, содержащих последовательность числовых значений, известный как ranges. Эта функция CoffeeScript основана на Ruby.
Синтаксис
Диапазоны создаются двумя числовыми значениями, первой и последней позициями в диапазоне, разделенными символами .. или .... Две точки (1..4), диапазон включает (1, 2, 3, 4); с тремя точками (1 ... 4) диапазон исключает конец (1, 2, 3).
Ниже приведен синтаксис диапазонов в CoffeeScript. Мы определим значения в диапазоне между квадратными скобками[ ]точно так же, как массивы. В диапазонах, сохраняя последовательность числовых значений, вместо предоставления значений всей последовательности мы можем просто указать ееbegin и end значения, разделенные двумя точками (..) как показано ниже.
range =[Begin..End]
пример
Вот пример диапазонов в CoffeeScript. Сохраните это в файле с именемranges_example.coffee.
numbers =[0..9]
console.log "The contents of the range are: "+ numbers
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл CoffeeScript, как показано ниже.
c:\> coffee ranges_example.coffee
При запуске файл CoffeeScript дает следующий результат.
The contents of the range are:: 0,1,2,3,4,5,6,7,8,9
Исключая конечное значение
Диапазоны составляются в полные массивы, содержащие все числа. Если мы хотим исключитьend значение, то мы должны отделить start и end элементы диапазона с использованием трех точек (...) как показано ниже.
range =[Begin...End]
пример
Мы можем переписать приведенный выше пример, исключив endзначение, как показано ниже. Сохраните следующее содержимое в файле с именемrange_excluding_end.coffee
numbers =[0...9]
console.log "The contents of the range are:: "+ numbers
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл 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
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл 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
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл 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
Диапазоны со струнами
Мы также можем использовать диапазоны со строками. Если мы указываем диапазоны после строк, то CoffeeScript нарезает их и возвращает новое подмножество символов.
пример
В следующем примере демонстрируется использование диапазонов со строками. Здесь мы создали строку и извлекли из нее подстроку, используя диапазоны. Сохраните этот код в файле с именемranges_with_strings.coffee
my_string = "Welcome to tutorialspoint"
new_string = my_string[0..10]
console.log new_string
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл CoffeeScript, как показано ниже.
c:\> coffee ranges_with_strings.coffee
При запуске файл CoffeeScript дает следующий результат. Здесь вы можете заметить, что конечное значение9 исключен.
Welcome to
Понимания по диапазонам
Как объекты и массивы, мы также можем перебирать элементы диапазона, используя понимания.
пример
Ниже приведен пример использования представлений по диапазонам. Здесь мы создали диапазон и извлекли из него элементы, используя понимания. Сохраните этот код в файле с именемcomprehensions_over_ranges.coffee
numbers =[0..9]
console.log "The elements of the range are: "
console.log num for num in numbers
Открыть command prompt и скомпилируйте файл .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);
Теперь откройте command prompt снова и запустите файл CoffeeScript, как показано ниже.
c:\> coffee comprehensions_over_ranges.coffee
При запуске файл CoffeeScript дает следующий результат. Здесь вы можете заметить, что конечное значение9 исключен.
The elements of the range are:
0
1
2
3
4
5
6
7
8
Таким же образом мы можем изменить это приращение с помощью ключевого слова по пониманию.
array = (num for num in [1..10] by 2)
console.log array