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
(ofalse
en caso dewhen-not
), y devuelvenil
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.