When is one better than the other? Is one faster than the other or does the only difference is the return of false or nil?
Use if
when you have exactly one truthy and one falsy case and you don't need an implicit do
block. In contrast, when
should be used when you only have to handle the truthy case and the implicit do
. There is no difference in speed, it's a matter of using the most idiomatic style.
(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))
In the if
case, only do-something
will be run if my-predicate?
returns a truthy result, whereas in the when
case, both do-something
and do-something-additionally
are executed.
Use if
when you have two different expressions: for true
clause and for false
clause.
when
and when-not
are useful in two cases:
do
helps here) non-pure operations conditionally;true
(or false
in case of when-not
), and return nil
in opposite case.only difference is the return of false or nil
There is no major difference between false
and nil
, as the both evaluate to false
in logical context.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With