Domanda

Come si controlla, in elisp, se un elenco contiene un valore? quindi quanto segue restituire t:

(contains 3 '(1 2 3))

ma

(contains 5 '(1 2 3))

restituirebbe zero.

È stato utile?

Soluzione

La funzione di cui hai bisogno è member

Ad esempio:

(member 3 '(1 2 3))

Restituirà la coda dell'elenco la cui macchina è elemento . Sebbene questo non sia rigorosamente t , qualsiasi valore diverso da zero equivale a true per un'operazione booleana . Inoltre, member utilizza uguale per verificare l'uguaglianza, usa memq per un'eguaglianza più rigorosa (usando eq ).

Altri suggerimenti

la risposta di freiksenet è buona e idiomatica. Se stai utilizzando dash.el , puoi anche chiamare la funzione -contains? , che significa esattamente lo stesso: controlla se qualche elenco contiene un elemento:

(-contains? '(1 2 3) 2) ; t
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top