Un sacco di codice Scala di esempio contiene stringhe e raccolte denominate "xs". Perché xs?Perché gli identificatori di elenco e stringa sono denominati "xs" (in Scala e in altre lingue)?
Esempi:
var xs = List(1,2,3)
val xs = "abc"
Un sacco di codice Scala di esempio contiene stringhe e raccolte denominate "xs". Perché xs?Perché gli identificatori di elenco e stringa sono denominati "xs" (in Scala e in altre lingue)?
Esempi:
var xs = List(1,2,3)
val xs = "abc"
Fondamentalmente si tratta di una convenzione di denominazione originata in LISP. La logica alla base è:
Ho pensato che fosse xii;) –
@Paul - no, funziona solo quando hai esattamente 12 xs –
Ho visto questo nome usato per variabili di lista in tutorial di programmazione funzionale, ma non stringhe (eccetto dove una stringa è considerato un elenco di caratteri).
In pratica è un nome fittizio utilizzato negli esempi. È possibile denominare una variabile scalare x
mentre un elenco sarebbe xs
, poiché xs
è il plurale di x
. Nel codice di produzione, è meglio avere un nome più descrittivo.
Si potrebbe anche vedere questo nel codice quale modello corrisponde alle liste. Per esempio (in OCaml):
let rec len l =
match l with
| [] -> 0
| x :: xs -> 1 + len xs
Una coppia più descrittivo dei nomi potrebbe essere first :: rest
, ma questo è solo un esempio.
Tendo ad usare la stessa convenzione in produzione, ad esempio "ordine" e "ordini";) – bbozo
A parte il fatto che xs
è destinato a essere un plurale di x come @Ken Bloom punti fuori, è anche importante notare come le lingue come la struttura Scala List
. List
è strutturato come un elenco collegato, in cui il contenitore ha un riferimento al primo elemento e al resto dell'elenco.
Il ::
operatore (chiamato cons) costruisce una lista come:
42 :: 69 :: 613 :: Nil
Il ::
quando compaiono in corrispondenza di modello estrae anche un elenco nel primo elemento e il resto della lista come segue:
List(42, 69, 613) match {
case x :: xs => x
case Nil => 0
}
Poiché questo modello appare ovunque, i pubblicitari possono dedurre che xs
implica "il resto della lista".
Pronuncia mentalmente "xs" come "eccesso", come in "resto". – nibot
Correlati (ma probabilmente non un duplicato) http://stackoverflow.com/questions/1564758/does-functional-programming-mandate-new-naming-conventions –