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