2012-06-08 4 views

Respuesta

14

every? devuelve verdadero o falso, por lo que se obtiene un signo de interrogación. some no devuelve un booleano, devuelve "el primer valor lógicamente verdadero devuelto por pred", y devuelve nil en caso contrario.

Aquí está el ejemplo cojo me ocurrió:

user=> (some #(if (= 0 %) 1 0) [1 3 5 0 9]) 
0 

El primer elemento de la colección se pasa en el predicado, el predicado evalúa a 0, que es lógicamente cierto modo some devuelve 0. se puede ver some no está devolviendo verdadero o falso.

Entonces every? obtiene un signo de interrogación porque devuelve verdadero o falso. some devuelve el valor devuelto por pred o nil, por lo que no se obtiene un signo de interrogación.

+0

Gracias. Intenté uno más y lo dejo en claro. '(algunos # {2 3 4 5} [2 3 4 5 6])' da o/p '2'. Esperaba que el 'algunos' devolviera booleanos. Arrgh. De todos modos, gracias. – nishnet2002

+0

@nestle: ese es un mejor ejemplo –

+0

Además, si desea devolver un booleano usando alguno, puede envolverlo en la función booleana: (booleano (algunos # {2 3 4 5} [2 3 4 5 6])) => true –

0

algunos no necesariamente devuelven un booleano, mientras que cada uno? siempre lo hace Ver el documentation.

Devuelve el primer valor de verdad lógica de (x pred) para cualquier x en el coll, demás nula. Un idioma común es el uso de un conjunto como pred, por ejemplo Esto devolverá: Fred si: Fred está en la secuencia, si no nula: (algunos # {:} Fred coll)

Cuestiones relacionadas