2010-07-23 34 views
17

Donc, Erlang est un vrai plaisir de travailler avec, mais il y a un problème que je rencontre de temps en temps, que je me demande s'il y a une meilleure façon de résoudre. Souvent, j'ai besoin de séparer plusieurs éléments d'une liste. La syntaxe pour diviser une liste en une tête et une queue est assez simple, mais qu'en est-il quand il y a plusieurs éléments.Le meilleur moyen de séparer plusieurs têtes d'une liste avec Erlang?

1> List = [1,2,3,4,5]. 
[1,2,3,4,5] 
2> [Head | Tail] = List. 
[1,2,3,4,5] 
3> Head. 
1 
4> Tail. 
[2,3,4,5] 

Y at-il une plus belle façon d'obtenir, par exemple, les deux premiers éléments d'une liste d'autres que de diviser deux fois en ligne?

1> List = [1,2,3,4,5]. 
[1,2,3,4,5] 
2> [Head1 | [Head2 | Tail]] = List. 
[1,2,3,4,5] 
3> Head1. 
1 
4> Head2. 
2 
5> Tail. 
[3,4,5] 

Je sais que cela peut aussi être simplifiée en écrivant des fonctions qui récursive divisées têtes suivantes à partir d'une liste, mais je me demande s'il y a un moyen en ligne plus simple de le faire (ou si, en fait, la récursif les fonctions de partage suivantes sont les meilleures pratiques pour accomplir cette tâche)? Merci!

+0

Avez-vous coché la case "Mise en route avec Erlang" à http://www.erlang.org/doc/getting_started/seq_prog.html#id2252255? – Zed

Répondre

29
[X1, X2 | Tail] = List. 
+0

Merci, je ne sais pas pourquoi je n'ai pas pensé à ça! –