CoffeeScript - Ranges
No capítulo anterior, vimos Arrays no CoffeeScript, durante a programação, enfrentaremos alguns cenários onde temos que armazenar uma sequência de valores numéricos em um array, conforme mostrado abaixo.
numbers =[1,2,3,4,5,6,7,8,9,10]
CoffeeScript fornece uma maneira mais curta de expressar as matrizes que contêm uma sequência de valores numéricos, conhecida como ranges. Este recurso do CoffeeScript é inspirado no Ruby.
Sintaxe
Os intervalos são criados por dois valores numéricos, a primeira e a última posição no intervalo, separados por .. ou .... Com dois pontos (1..4), o intervalo é inclusivo (1, 2, 3, 4); com três pontos (1 ... 4), o intervalo exclui o final (1, 2, 3).
A seguir está a sintaxe dos intervalos no CoffeeScript. Vamos definir os valores em um intervalo entre colchetes[ ]assim como matrizes. Em intervalos, ao armazenar uma sequência de valores numéricos, em vez de fornecer os valores de toda a sequência, podemos apenas especificar seubegin e end valores separados por dois pontos (..) como mostrado abaixo.
range =[Begin..End]
Exemplo
Aqui está um exemplo de intervalos em CoffeeScript. Salve isso em um arquivo com o nomeranges_example.coffee.
numbers =[0..9]
console.log "The contents of the range are: "+ numbers
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c ranges_example.coffee
Na compilação, ele fornece o seguinte JavaScript. Aqui você pode observar que o intervalo é convertido em um array completo de 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee ranges_example.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.
The contents of the range are:: 0,1,2,3,4,5,6,7,8,9
Excluindo o valor final
Os intervalos são compilados em matrizes completas contendo todos os números. Se quisermos excluir oend valor, então temos que separar o start e end elementos do intervalo usando três pontos (...) como mostrado abaixo.
range =[Begin...End]
Exemplo
Podemos reescrever o exemplo acima, excluindo o endvalor conforme mostrado abaixo. Salve o seguinte conteúdo em um arquivo com o nomerange_excluding_end.coffee
numbers =[0...9]
console.log "The contents of the range are:: "+ numbers
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c ranges_example.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee ranges_example.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída. Aqui, você pode observar que o valor final9 é excluído.
The contents of the range are:: 0,1,2,3,4,5,6,7,8
Usando intervalos com variáveis
Também podemos definir um intervalo atribuindo os valores inicial e final às variáveis.
Exemplo
Considere o seguinte exemplo. Aqui, definimos um intervalo usando variáveis. Salve este código em um arquivo com o nomerange_variables.coffee
start=0
end=9
numbers =[start..end]
console.log "The contents of the range are: "+ numbers
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c range_variables.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee range_variables.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída. Aqui, você pode observar que o valor final9 é excluído.
The contents of the range are:: 0,1,2,3,4,5,6,7,8,9
Faixas com matrizes
Podemos dividir arrays usando-os com intervalos. Sempre que especificamos intervalos imediatamente após arrays (variáveis), o compilador CoffeeScript o converte em umslice() chamada de método de JavaScript.
Suponha que temos uma matriz com valores numéricos, digamos 0 a 9, então podemos recuperar os primeiros 4 elementos dela, conforme mostrado abaixo.
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
data = num[0..5]
Os valores negativos representam os elementos do final, por exemplo, -1 indica 9. Se especificarmos um número negativo 3 seguido por dois pontos, os últimos três elementos da matriz serão extraídos.
data = num[-3..]
Se especificarmos apenas dois pontos no intervalo de uma matriz como num[..], a matriz completa será extraída. Também podemos substituir um segmento de array por outros elementos usando intervalos como mostrado abaixo.
num[2..6] = [13,14,15,16,17]
Exemplo
O exemplo a seguir demonstra o uso de intervalos com matrizes. Salve este código em um arquivo com o nomerange_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
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c range_arrays.coffee
Na compilação, ele fornece o seguinte JavaScript. Aqui você pode observar que todos os intervalos são convertidos nas chamadas de método slice () de 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee range_arrays.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída. Aqui, você pode observar que o valor final9 é excluído.
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
Faixas com cordas
Também podemos usar intervalos com Strings. Se especificarmos intervalos após Strings, o CoffeeScript os dividirá e retornará um novo subconjunto de caracteres.
Exemplo
O exemplo a seguir demonstra o uso de intervalos com Strings. Aqui, criamos uma string e extraímos uma substring dela usando intervalos. Salve este código em um arquivo com o nomeranges_with_strings.coffee
my_string = "Welcome to tutorialspoint"
new_string = my_string[0..10]
console.log new_string
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c ranges_with_strings.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee ranges_with_strings.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída. Aqui, você pode observar que o valor final9 é excluído.
Welcome to
Comprehensions over range
Como objetos e matrizes, também podemos iterar os elementos de um intervalo usando compreensões.
Exemplo
A seguir está um exemplo de uso de compreensões em intervalos. Aqui, criamos um intervalo e recuperamos os elementos nele usando compreensões. Salve este código em um arquivo com o nomecomprehensions_over_ranges.coffee
numbers =[0..9]
console.log "The elements of the range are: "
console.log num for num in numbers
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c comprehensions_over_ranges.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee comprehensions_over_ranges.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída. Aqui, você pode observar que o valor final9 é excluído.
The elements of the range are:
0
1
2
3
4
5
6
7
8
Da mesma forma, também podemos alterar esse incremento usando a palavra-chave by de compreensões.
array = (num for num in [1..10] by 2)
console.log array