Elispでは、ifステートメントロジックはifケースとelseケースのみを許可します。
(if (< 3 5)
; if case
(foo)
; else case
(bar))
しかし、else-ifを実行したい場合はどうなりますか? elseケース内に新しいifステートメントを入れる必要がありますか?少し面倒なようです。
(if test-expression then-expression else-expression)
の部分はelse if
であるため、新しいif
をelse-expression
としてネストします。
(if test-expression1
then-expression1
(if test-expression2
then-expression2
else-expression2))
他の言語では、else if
は通常同じレベルにあります。 Lispには、そのためのcond
があります。 cond
とまったく同じです。
(cond (test-expression1 then-expression1)
(test-expression2 then-expression2)
(t else-expression2))
式はそれだけである可能性があることに注意してください。多くの場合、これらは(some-test-p some-variable)
のような式であり、他の式も通常はそうです。評価される単一のシンボルになることはめったにありませんが、非常に単純な条件文の場合もあります。