case

Title
case
Type
Macro
Arguments
case KEYFORM &rest FORMS
Package
lisp
Section
制御構造
File
evalmacs.l
C言語のswitch文みたいなのです。

(case <キー>
  (<リスト1> <式>〜<式>)
  (<リスト2> <式>〜<式>)
       ...
  (<リストn> <式>〜<式>))

まず<キー>を評価し,それが<リスト>のどれかの要素と一致すれば,
その<リスト>に続く式を順に評価して,最後の式の値をcaseの値として返
す。どの<リスト>のどの要素にも一致しなければcaseの値はnilである。
ただし例外として,最後のリスト(<リストn>)がtであれば,「どれにも一
致しなければ」を意味する。

<リスト1>〜<リストn>までは,それぞれデータのリストで,これら
は評価されない。すなわち値がリストになる式ではなく,リストそのものがここ
に入る。要素が一つだけの場合は,リストの代わりに要素がここにきてもいい。

使用例:
  ;;; 4を入力して場合分けさせる
  (setq x 4)
  => 4
  (case x
    (1 'one)
    (2 'two)
    (3 'three)
    ((4 5) 'four_or_five)
    (t 'large))
  => four_or_five