elseif
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/23 09:22 UTC 版)
「宙ぶらりんelse問題(dangling else problem、en:Dangling else)」も関係するのだが、文法の設計(デザイン)によっては、 IF cond THEN ...ELSE IF cond THEN ... ELSE IF cond THEN ... FI FIFI のように、「複数の場合に対する場合分け」の単純な多分岐であるにもかかわらず、どんどんネストが深くなるような書き方をせざるをえない場合がある(C言語の文法の設計は、こうなってはいない)。これは ELSEIF のようなキーワードの導入で解決できる。elseif, elsif, elif など言語によるバリエーションが多いので、テキストエディタによるリアルタイムなシンタックスハイライトが非常に有効である。言語によっては else if という「2語から成るキーワードのようなもの」という設計のものもある。 Pascal:C:シェルスクリプト:Python:Lisp:Smalltalk:if a > 0 then begin writeln("yes")end else begin writeln("no")end if (a > 0) { printf("yes");} else { printf("no");} if [ $a -gt 0 ] then echo "yes"else echo "no"fi if a > 0: print "yes"else: print "no" (princ (if (plusp a) "yes" "no")) Transcript show:( a > 0 ifTrue: [ 'yes' ] ifFalse: [ 'no' ]). あまり一般的でないバリエーションとして、以下のような例がある。 FORTRANなどの一部の言語では、3方向の分岐を扱う「算術IF文」があり、数値を正か、ゼロか、負か判定して処理を分岐させる。 多くの関数型言語などではif文が関数や式として実装されており、そのようなifは評価した式の結果を返す。 一部の言語ではif文が演算子の様に実装されており、例えばC言語の条件演算子がある。 PerlではC言語風の if だけでなく、when と unless や、コードの後に条件式が来る if がある。 Smalltalkでは言語組込みの機能としてではなく、ifTrue と ifFalse というメッセージに手続き引数を与えることで、条件付き実行ができる。 一般論として、関数の引数を積極評価してしまう言語では、条件実行のようなものを関数にできない。遅延評価のような機構が何かあれば、条件実行を特に言語機能にしなくても、引数を遅延評価する関数によって、条件実行もできる。
※この「elseif」の解説は、「制御構造」の解説の一部です。
「elseif」を含む「制御構造」の記事については、「制御構造」の概要を参照ください。
- else ifのページへのリンク