Question Pourquoi les identifiants List et String sont-ils nommés "xs" (en Scala et dans d'autres langues)?


Un grand nombre de code Scala contient des chaînes et des collections nommées "xs". Pourquoi xs?

Exemples:

var xs = List(1,2,3)
val xs = "abc"

33
2017-10-14 22:14


origine


Réponses:


Fondamentalement, il s'agit d'une convention de dénomination originaire de LISP. La raison en est que:

  1. X est un nom d'espace réservé commun.
  2. XS se prononce X'es, c'est-à-dire "beaucoup X".

42
2017-10-14 22:24



xs est le pluriel de x.


29
2017-10-14 22:22



Excepté que xs est censé être un pluriel de x comme @Ken Bloom fait remarquer, il est également pertinent de noter comment les langues comme la structure Scala List. List est structuré comme une liste chaînée, dans laquelle le conteneur a une référence au premier élément et au reste de la liste.

alt text

le :: opérateur (appelé les inconvénients) construit la liste comme suit:

42 :: 69 :: 613 :: Nil

le :: lorsqu’il apparaît dans une correspondance de modèle, extrait également une liste dans le premier élément et le reste de la liste comme suit:

List(42, 69, 613) match {
  case x :: xs => x
  case Nil => 0
}

Puisque ce motif apparaît partout, les lecteurs peuvent déduire que xs implique "le reste de la liste".


14
2017-10-14 22:37



J'ai vu ce nom utilisé pour les variables de liste dans les didacticiels de programmation fonctionnelle, mais pas les chaînes (sauf lorsqu'une chaîne est considérée comme une liste de caractères).

C'est un nom factice utilisé dans les exemples. Vous pourriez nommer une variable scalaire x alors qu'une liste serait xs, depuis xs est le pluriel de x. En code de production, il vaut mieux avoir un nom plus descriptif.

Vous pouvez également voir ceci dans le code, lequel modèle correspond aux listes. Par exemple (en OCaml):

let rec len l =
  match l with
  | [] -> 0
  | x :: xs -> 1 + len xs

Une paire de noms plus descriptive pourrait être first :: rest, mais ce n'est qu'un exemple.


8
2017-10-14 22:23