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
doayuda aquí) operaciones no puras condicionalmente; - cuando quiere evaluar algo cuando algún predicado se evalúa como
true(ofalseen caso dewhen-not), y devuelvenilen 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.