Введите Ch f при RET , и вы увидите документацию:
when
- это макрос Lisp в subr.el
.
(when COND BODY...)
Когда COND
возвращает не- nil
, eval BODY
формируется последовательно и возвращает значение последнего или nil
, если таковых нет.
Вы можете увидеть, как это реализовано, если развернете макрос:
ELISP> (macroexpand '(when cond body1 body2 body3))
(if cond
(progn body1 body2 body3))
Вы должны использовать when
вместо if
в случае, когда у вас нет предложения "else".Это выглядит лучше, и это дает подсказку читателю, что нет предложения "else".Если у вас есть предложение "else", но нет предложения "then", вы можете написать unless
.