以下のコードをマクロを使って書くことにする。
(if t (progn (setq a 1) (message "%s" a))) ; => "1" (if nil (progn (setq a 1) (message "%s" a))) ; => nil
マクロを定義するにはdefmacroを使う
(defmacro my-when (condition &rest body) `(if ,condition (progn ,@body))) ;; テスト (my-when t 1 2) ; => 2 (my-when t 1) ; => 1 (my-when nil 1 2) ; => nil ;; インデントが気にくわないのでdeclareを使って ;; インデントを調整する (defmacro my-when (condition &rest body) (declare (indent 1)) `(if ,condition (progn ,@body))) ;; テスト (my-when t 1 2) ; => 2 (my-when nil 1 2 3 4) ; => nil
P182
- 作者: るびきち
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/26
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 220回
- この商品を含むブログを見る