Когда я использую ключевое слово «когда» (или выражение) в emacs lisp - PullRequest
4 голосов
/ 14 июля 2011

Я нахожусь в процессе изучения того, как расширить мое локальное программное обеспечение GNU emacs, изучая emacs lisp. В одном из исходных кодов, с которыми я столкнулся, я увидел там «когда». Я думаю, что это контрольная структура, но я не уверен. Я попытался погуглить «ключевое слово / выражение when в emacs lisp» (и другие подобные перестановки). Я даже проверил сайт gnu.org. Я нашел только исходные коды, которые содержали «когда», но не содержали описания того, как и когда использовать «когда». Может кто-нибудь сказать мне, как и в каких подходящих ситуациях я должен использовать «когда» в управляющих структурах и т. Д. В emacs lisp? Заранее спасибо.

Ответы [ 2 ]

14 голосов
/ 14 июля 2011

Введите 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.

2 голосов
/ 20 августа 2011

Многие люди следуют соглашению об использовании, когда и только, чтобы сигнализировать читателям, что возвращаемое значение sexp не важно - важны любые побочные эффекты.

...