elispでは、if文のロジックではif文のみが許されます。Elisp:どうすればelse-ifを表現できますか?
(if (< 3 5)
; if case
(foo)
; else case
(bar))
しかし、もしelse-ifをしたいのですが? else文の中に新しいif文を入れる必要がありますか?ちょっと面倒です。
elispでは、if文のロジックではif文のみが許されます。Elisp:どうすればelse-ifを表現できますか?
(if (< 3 5)
; if case
(foo)
; else case
(bar))
しかし、もしelse-ifをしたいのですが? else文の中に新しいif文を入れる必要がありますか?ちょっと面倒です。
(if test-expression then-expression else-expression)
else if
の部分以来が巣にelse-expression
として新しいif
であるかどう:
(if test-expression1
then-expression1
(if test-expression2
then-expression2
else-expression2))
を使用して他の言語でelse if
が上通常であります同じレベル。リップスでは、それのためにcond
があります。ここでcond
とまったく同じである:式がちょうどその可能
(cond (test-expression1 then-expression1)
(test-expression2 then-expression2)
(t else-expression2))
注意。このような表現はしばしば(some-test-p some-variable)
のような表現であり、他の表現も通常そうである。非常にめったに評価されない単一のシンボルですが、非常に単純な条件文の場合もあります。
を参照してください。私は、" cond'を使うのがおそらく最も慣用的です溶液。場合によっては、ネストされたifでオブジェクトがより明確になることもありますが、それはあまり使用されないので、「cond'を使用する」ことは賢明な第1のアプローチです。 – Vatine
@Vatine if木が1つの枝に重い限り私は同意します。もしあなたがこのようなものを持っていれば、(赤いo)(赤い四角形の場合は赤い四角形)(青い四角形の場合) (赤と赤の)赤い四角形)赤い四角形の赤い四角形赤い四角形赤い四角形赤い四角形赤い四角形(t 'blue-round)) 'である。 1時間当たり平均3.25回のテストに対して、 'cond'を使うと、コードはやや乱雑です。 'if'以上の余分な機能を使用しないと' cond'を使用しません。例えば。 '(もしテストすれば)'私は 'cond'と書くことはありません – Sylwester
うん、私は「決して使ってはいけない」と言わなかった理由のひとつです。入れ子にされた 'if'(または複数の' when'、 'or'で囲まれ、' if'内部で)は 'cond'よりも明瞭です。 – Vatine
['cond'](https://www.gnu.org/software/emacs/manual/html_node/elisp/Conditionals.html) – jkiiski