CoffeeScript - Gamme

Nel capitolo precedente, abbiamo visto Arrays in CoffeeScript, durante la programmazione affronteremo alcuni scenari in cui dobbiamo memorizzare una sequenza di valori numerici in un array come mostrato di seguito.

numbers =[1,2,3,4,5,6,7,8,9,10]

CoffeeScript fornisce un modo più breve per esprimere gli array contenenti una sequenza di valori numerici, nota come ranges. Questa funzionalità di CoffeeScript è ispirata a Ruby.

Sintassi

Gli intervalli sono creati da due valori numerici, la prima e l'ultima posizione nell'intervallo, separati da .. o .... Con due punti (1..4), l'intervallo è inclusivo (1, 2, 3, 4); con tre punti (1 ... 4), l'intervallo esclude la fine (1, 2, 3).

Di seguito è riportata la sintassi degli intervalli in CoffeeScript. Definiremo i valori in un intervallo tra parentesi quadre[ ]proprio come gli array. Negli intervalli, mentre si memorizza una sequenza di valori numerici, invece di fornire i valori dell'intera sequenza, possiamo semplicemente specificarnebegin e end valori separati da due punti (..) come mostrato di seguito.

range =[Begin..End]

Esempio

Ecco un esempio di intervalli in CoffeeScript. Salvalo in un file con nomeranges_example.coffee.

numbers =[0..9]
console.log "The contents of the range are: "+ numbers

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c ranges_example.coffee

Durante la compilazione, ti dà il seguente JavaScript. Qui puoi osservare che l'intervallo viene convertito in un array CoffeeScript completo.

// 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee ranges_example.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

The contents of the range are:: 0,1,2,3,4,5,6,7,8,9

Escluso il valore finale

Gli intervalli vengono compilati in array completi contenenti tutti i numeri. Se vogliamo escludere il fileend valore, quindi dobbiamo separare il start e end elementi della gamma utilizzando tre punti (...) come mostrato di seguito.

range =[Begin...End]

Esempio

Possiamo riscrivere l'esempio sopra escludendo il file endvalore come mostrato di seguito. Salva i seguenti contenuti in un file con nomerange_excluding_end.coffee

numbers =[0...9]
console.log "The contents of the range are:: "+ numbers

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c ranges_example.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee ranges_example.coffee

All'esecuzione, il file CoffeeScript produce il seguente output. Qui puoi osservare che il valore finale9 è escluso.

The contents of the range are:: 0,1,2,3,4,5,6,7,8

Utilizzo di intervalli con variabili

Possiamo anche definire un intervallo assegnando i valori di inizio e fine alle variabili.

Esempio

Considera il seguente esempio. Qui abbiamo definito un intervallo utilizzando le variabili. Salva questo codice in un file con nomerange_variables.coffee

start=0
end=9
numbers =[start..end]
console.log "The contents of the range are: "+ numbers

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c range_variables.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee range_variables.coffee

All'esecuzione, il file CoffeeScript produce il seguente output. Qui puoi osservare che il valore finale9 è escluso.

The contents of the range are:: 0,1,2,3,4,5,6,7,8,9

Intervalli con array

Possiamo suddividere gli array usandoli con intervalli. Ogni volta che specifichiamo intervalli immediatamente dopo array (variabili), il compilatore CoffeeScript lo converte in un fileslice() chiamata al metodo di JavaScript.

Supponiamo di avere un array con valori numerici, diciamo da 0 a 9, quindi possiamo recuperarne i primi 4 elementi come mostrato di seguito.

num  = [1, 2, 3, 4, 5, 6, 7, 8, 9]
data = num[0..5]

I valori negativi rappresentano gli elementi dalla fine, ad esempio, -1 indica 9. Se specifichiamo un numero negativo 3 seguito da due punti, verranno estratti gli ultimi tre elementi della matrice.

data = num[-3..]

Se specifichiamo solo due punti nell'intervallo di un array come num[..], quindi verrà estratto l'array completo. Possiamo anche sostituire un segmento di array con altri elementi utilizzando gli intervalli come mostrato di seguito.

num[2..6] = [13,14,15,16,17]

Esempio

L'esempio seguente mostra l'uso di intervalli con gli array. Salva questo codice in un file con 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

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c range_arrays.coffee

Durante la compilazione, ti dà il seguente JavaScript. Qui puoi osservare che tutti gli intervalli vengono convertiti nelle chiamate al metodo slice () di 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee range_arrays.coffee

All'esecuzione, il file CoffeeScript produce il seguente output. Qui puoi osservare che il valore finale9 è escluso.

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

Intervalli con archi

Possiamo anche usare intervalli con stringhe. Se specifichiamo intervalli dopo le stringhe, CoffeeScript li divide e restituisce un nuovo sottoinsieme di caratteri.

Esempio

L'esempio seguente mostra l'uso di intervalli con stringhe. Qui abbiamo creato una stringa e ne abbiamo estratta una sottostringa utilizzando intervalli. Salva questo codice in un file con nomeranges_with_strings.coffee

my_string = "Welcome to tutorialspoint"
new_string = my_string[0..10]
console.log new_string

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c ranges_with_strings.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee ranges_with_strings.coffee

All'esecuzione, il file CoffeeScript produce il seguente output. Qui puoi osservare che il valore finale9 è escluso.

Welcome to

Comprensioni su intervalli

Come oggetti e array, possiamo anche iterare gli elementi di un intervallo usando le comprensioni.

Esempio

Di seguito è riportato un esempio di utilizzo delle comprensioni su intervalli. Qui abbiamo creato un intervallo e recuperato gli elementi in esso utilizzando le comprensioni. Salva questo codice in un file con il nomecomprehensions_over_ranges.coffee

numbers =[0..9]
console.log "The elements of the range are: "
console.log num for num in numbers

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c comprehensions_over_ranges.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee comprehensions_over_ranges.coffee

All'esecuzione, il file CoffeeScript produce il seguente output. Qui puoi osservare che il valore finale9 è escluso.

The elements of the range are:
0
1
2
3
4
5
6
7
8

Allo stesso modo possiamo anche modificare questo incremento utilizzando la parola chiave by di comprensione.

array = (num for num in [1..10] by 2)
console.log array