25-08-2011, 09:39 PM
Les listes sont une suite d'éléments (pas forcément d'un même type). On peut leur appliquer le pattern matching pour en extraire des éléments. Le | sert à distinguer la tête (head) de la queue (tail).
Les chaînes de caractères ne sont pas une force d'Erlang. De base, elles sont strictement équivalente à une liste de nombres. Les nombres sont les identifiants de ces caractères au sein du jeu de caractère ISO-8859-1 (aussi appelé Latin-1).
Ainsi, si on déclare une liste composée uniquement de nombres qui sont présents dans la table de caractères, Erlang nous affiche la chaîne équivalente. Et du coup elles sont strictement équivalentes.
L'affectation de la ligne 4 ne produit pas d'erreur ! C'est donc que les 2 notations sont bien équivalentes !
On peut encore utiliser le pattern matching pour extraire des valeurs.
1> Letters = [ a, b, c, d ].
[a,b,c,d]
2> [ A | Others ] = Letters.
[a,b,c,d]
3> A.
a
4> Others.
[b,c,d]
5> [ A, B | Rest ] = Letters.
[a,b,c,d]
6> A.
a
7> B.
b
8> Rest.
[c,d]
Les chaînes de caractères ne sont pas une force d'Erlang. De base, elles sont strictement équivalente à une liste de nombres. Les nombres sont les identifiants de ces caractères au sein du jeu de caractère ISO-8859-1 (aussi appelé Latin-1).
Ainsi, si on déclare une liste composée uniquement de nombres qui sont présents dans la table de caractères, Erlang nous affiche la chaîne équivalente. Et du coup elles sont strictement équivalentes.
1> [ 74, 101, 117, 87, 101, 98 ].
"JeuWeb"
2> JeuWebAsNumbers = [ 74, 101, 117, 87, 101, 98 ].
"JeuWeb"
3> JeuWebAsString = "JeuWeb".
"JeuWeb"
4> JeuWebAsString = JeuWebAsNumbers.
"JeuWeb"
L'affectation de la ligne 4 ne produit pas d'erreur ! C'est donc que les 2 notations sont bien équivalentes !
On peut encore utiliser le pattern matching pour extraire des valeurs.
1> [ J, _, _, W | _ ] = JeuWeb.
"JeuWeb"
2> J.
74
3> W.
87
4> [ J, _, _, W | Rest ] = JeuWeb.
"JeuWeb"
5> Rest.
"eb"