CoffeeScript - Plages

Dans le chapitre précédent, nous avons vu des tableaux dans CoffeeScript, lors de la programmation, nous ferons face à des scénarios où nous devons stocker une séquence de valeurs numériques dans un tableau comme indiqué ci-dessous.

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

CoffeeScript fournit un moyen plus court d'exprimer les tableaux contenant une séquence de valeurs numériques, appelée ranges. Cette fonctionnalité de CoffeeScript est inspirée de Ruby.

Syntaxe

Les plages sont créées par deux valeurs numériques, la première et la dernière position de la plage, séparées par .. ou .... Avec deux points (1..4), la plage est inclusive (1, 2, 3, 4); avec trois points (1 ... 4), la plage exclut la fin (1, 2, 3).

Ci-dessous, la syntaxe des plages dans CoffeeScript. Nous définirons les valeurs dans une plage entre accolades[ ]tout comme les tableaux. Dans les plages, tout en stockant une séquence de valeurs numériques, au lieu de fournir les valeurs de la séquence entière, nous pouvons simplement spécifier sonbegin et end valeurs séparées par deux points (..) comme indiqué ci-dessous.

range =[Begin..End]

Exemple

Voici un exemple de plages dans CoffeeScript. Enregistrez-le dans un fichier avec un nomranges_example.coffee.

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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c ranges_example.coffee

Lors de la compilation, il vous donne le JavaScript suivant. Ici, vous pouvez observer que la plage est convertie en tableau CoffeeScript complet.

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

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee ranges_example.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante.

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

Hors valeur finale

Les plages sont compilées dans des tableaux complets contenant tous les nombres. Si nous voulons exclure leend valeur, alors nous devons séparer le start et end éléments de la gamme à l'aide de trois points (...) comme indiqué ci-dessous.

range =[Begin...End]

Exemple

Nous pouvons réécrire l'exemple ci-dessus en excluant le endvaleur comme indiqué ci-dessous. Enregistrez le contenu suivant dans un fichier avec un nomrange_excluding_end.coffee

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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c ranges_example.coffee

Lors de la compilation, il vous donne le JavaScript suivant.

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

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee ranges_example.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante. Ici, vous pouvez observer que la valeur finale9 est exclu.

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

Utilisation de plages avec des variables

Nous pouvons également définir une plage en affectant les valeurs de début et de fin à des variables.

Exemple

Prenons l'exemple suivant. Ici, nous avons défini une plage à l'aide de variables. Enregistrez ce code dans un fichier avec un nomrange_variables.coffee

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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c range_variables.coffee

Lors de la compilation, il vous donne le JavaScript suivant.

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

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee range_variables.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante. Ici, vous pouvez observer que la valeur finale9 est exclu.

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

Plages avec tableaux

Nous pouvons découper des tableaux en les utilisant avec des plages. Chaque fois que nous spécifions des plages immédiatement après des tableaux (variables), le compilateur CoffeeScript le convertit en unslice() appel de méthode de JavaScript.

Supposons que nous ayons un tableau ayant des valeurs numériques, disons de 0 à 9, alors nous pouvons en récupérer les 4 premiers éléments comme indiqué ci-dessous.

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

Les valeurs négatives représentent les éléments de la fin, par exemple, -1 indique 9. Si nous spécifions un nombre négatif 3 suivi de deux points, les trois derniers éléments du tableau seront extraits.

data = num[-3..]

Si nous spécifions seulement deux points dans la plage d'un tableau comme num[..], puis le tableau complet sera extrait. Nous pouvons également remplacer un segment de tableau par d'autres éléments en utilisant des plages comme indiqué ci-dessous.

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

Exemple

L'exemple suivant illustre l'utilisation de plages avec des tableaux. Enregistrez ce code dans un fichier avec un nomrange_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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c range_arrays.coffee

Lors de la compilation, il vous donne le JavaScript suivant. Ici, vous pouvez observer que toutes les plages sont converties en appels à la méthode 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);

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee range_arrays.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante. Ici, vous pouvez observer que la valeur finale9 est exclu.

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

Gammes avec cordes

Nous pouvons également utiliser des plages avec des chaînes. Si nous spécifions des plages après Strings, CoffeeScript les coupe et renvoie un nouveau sous-ensemble de caractères.

Exemple

L'exemple suivant illustre l'utilisation de plages avec des chaînes. Ici, nous avons créé une chaîne et en avons extrait une sous-chaîne à l'aide de plages. Enregistrez ce code dans un fichier avec un nomranges_with_strings.coffee

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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c ranges_with_strings.coffee

Lors de la compilation, il vous donne le JavaScript suivant.

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

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee ranges_with_strings.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante. Ici, vous pouvez observer que la valeur finale9 est exclu.

Welcome to

Compréhensions sur les gammes

En tant qu'objets et tableaux, nous pouvons également itérer les éléments d'une plage à l'aide de compréhensions.

Exemple

Voici un exemple d'utilisation de compréhensions sur des plages. Ici, nous avons créé une plage et récupéré les éléments qu'elle contient à l'aide de compréhensions. Enregistrez ce code dans un fichier avec le nomcomprehensions_over_ranges.coffee

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

Ouvrez le command prompt et compilez le fichier .coffee comme indiqué ci-dessous.

c:\> coffee -c comprehensions_over_ranges.coffee

Lors de la compilation, il vous donne le JavaScript suivant.

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

Maintenant, ouvrez le command prompt à nouveau et exécutez le fichier CoffeeScript comme indiqué ci-dessous.

c:\> coffee comprehensions_over_ranges.coffee

Lors de l'exécution, le fichier CoffeeScript produit la sortie suivante. Ici, vous pouvez observer que la valeur finale9 est exclu.

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

De la même manière, nous pouvons également modifier cet incrément en utilisant le mot-clé by de compréhensions.

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