somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】スペシャルフォームcondによる条件分岐

Elispでの複数条件分岐についてのメモです。

cond

condは関数じゃなくてスペシャルフォームだそうです。

実行したい処理ごとに条件文を詳細に決めることができます。

(defun my-cond-test (test1 test2)
  (cond ; 同値の場合
        ((eq test1 test2)
          (format "test1 equals test2. value is %s." test1)
        )
        ; test1がnilの場合
        ((not test1)
          "test1 is nil"
        )

        ;; 条件に当てはまらない場合
        (t
          (format "test1 different test2: test1[%s], test2[%s]" test1 test2)
        )
  )
)

(my-cond-test 1   1) ;⇒test1 equals test2. value is 1
(my-cond-test nil 1) ;⇒test1 is nil
(my-cond-test 1   2) ;⇒test1 different test2: test1[1], test2[2]