Ответ 1
Используйте if
, когда у вас есть только один вариант правды и один фальшивый случай, и вам не нужен неявный блок do
. Напротив, when
следует использовать, когда вам нужно только обрабатывать правдивый случай и неявный do
. Нет никакой разницы в скорости, это вопрос использования самого идиоматического стиля.
(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))
В случае if
будет выполняться только do-something
, если my-predicate?
возвращает правдивый результат, тогда как в случае when
выполняются как do-something
, так и do-something-additionally
.