2011-08-30 1 views

Répondre

11

Vous devriez vraiment lire une introduction à elisp ou quelque chose avant d'essayer de l'utiliser. Le manuel Elisp qui est fourni avec Emacs dans certaines distributions est assez bon.

(nth 0 mylist) 

http://www.gnu.org/software/emacs/elisp/html_node/List-Elements.html

+0

Et vous devez accepter une réponse quand il est fourni. Dans ce cas, la réponse de @ triplee est correcte, en supposant que vous connaissiez la position de liste de l'élément. – Drew

1

Si vous connaissez la position de la liste de l'élément, puis utilisez (nth 0 mylist), comme @triplee indiqué.

Si vous voulez tester l'égalité des éléments (dans ce cas, l'égalité de chaîne) puis utilisez ceci:

(car (member "y" mylist)) 

(member "y" mylist) retourne la sous-liste (queue) ("y" "z") et car renvoie le premier élément de cette sous-liste (car est le même que nth avec 0 premier argument).

Si la chaîne que vous voulez est pas membre de la liste, puis retourne member la liste vide nil (alias ()) et car de cette liste renvoie nil. Donc member est à la fois (a) un prédicat pour tester l'appartenance à la liste (renvoie nil' for not present and non- nil` pour le présent) et (b) un moyen d'extraire la première sous-liste (queue) qui contient l'élément que vous recherchez.

0

Lire les sous-sections List Elements et Using Lists as Sets de la section Lists de GNU Emacs Lisp Reference Manual. Le manuel est votre ami, c'est le premier endroit où vous devriez regarder, quand vous avez une question sur Elisp. Pour accéder au manuel dans Emacs, voir l'aide du système d'info en appuyant sur F1 imelispEntrez ou contournez Info-Mode de fonctionnement manuel.

Si vous écrivez du code Elisp sérieux, je recommande d'installer le paquet dash, qui a beaucoup de fonctions pour interroger et transformer des listes. Par exemple, si vous voulez trouver un premier (ou le dernier) élément qui satisfait un prédicat, utilisez -first ou -last:

(-first 'evenp '(1 2 3 4 5 6)) ; 2 
(-last 'evenp '(1 2 3 4 5 6)) ; 6 
Questions connexes