if-statement clojure

if statement - ¿Cuándo usar "si" y "cuándo" en Clojure?



if-statement (2)

¿Cuándo es uno mejor que el otro? ¿Es uno más rápido que el otro o la única diferencia es el retorno de falso o nulo?


Utilícelo if tiene dos expresiones diferentes: para la cláusula true y para la cláusula false .

when y when-not son útiles en dos casos:

  • cuando desee realizar una o varias (implícitamente do ayuda aquí) operaciones no puras condicionalmente;
  • cuando quiere evaluar algo cuando algún predicado se evalúa como true (o false en caso de when-not ), y devuelve nil en caso contrario.

única diferencia es el retorno de falso o nulo

No hay una gran diferencia entre false y nil , ya que ambos evalúan a false en el contexto lógico.


Úselo if tiene exactamente una verdad y un caso falso y no necesita un bloque do implícito. Por el contrario, when debe usarse cuando solo tiene que manejar el caso de verdad y el do implícito. No hay diferencia en la velocidad, se trata de usar el estilo más idiomático.

(if (my-predicate? my-data) (do-something my-data) (do-something-else my-data)) (when (my-predicate? my-data) (do-something my-data) (do-something-additionally my-data))

En el caso if , ¿solo do-something se ejecutará si my-predicate? devuelve un resultado verdadero, mientras que en el caso when , ambos do-something y do-something-additionally son ejecutados.