by shigemk2

当面は技術的なことしか書かない

whenとunless

(when 条件
  真フォーム1
  真フォーム2
  ..)
最後に評価した真フォーム・条件を満たさないときはnil
(unless 条件
  偽フォーム1
  偽フォーム2
  ..)
最後に評価した偽フォーム・条件を満たしたときはnil
;;; whenの中が実行される例
(let (msg)
  (when (= 0 (% 6 2))
    ;; ここには複数のフォームを置ける
    (setq msg "6は偶数です"))
    msg)				; => "6は偶数です"
;;; whenの中が実行されない例
(let (msg)
  (when (= 1 (% 6 2))
    (setq msg "6は奇数です"))
    msg)				; => nil
;;; whenの対義語がunless
(let (msg)
  (unless (= 1 (% 6 2))
    ;; ここにも複数のフォームを置ける
    (setq msg "6は奇数じゃないよ"))
    msg)				; => "6は奇数じゃないよ"

P60

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル