else ifがおぼえられない症候群
else ifがおぼえられなくて困る。
雑食系プログラマーなので問題解決に適したライブラリの整備具合や実行環境との親和性によってプログラミング言語を選ぶことが多い。たいていはちょっと頭を切り替えればRubyモードになったりJavaモードになったりするので良いのだけれど、else ifだけはどうしてもおぼえられない。
PHPはelse ifだっけ?それともelseifだっけ?Haskellではどうだっけ?bashはelifだったかな?みたいになってしまう。まあそれでも、えいやと実行してしまえばたいていシンタックスエラーが出るので良いのだけれど、以前うっかり以下のようなコードを書いてはまったことがある。
foo.rb
#!/usr/bin/ruby n = 2 if n == 1 puts "1" elseif n == 2 # elsifをelseifと誤記 puts "2" else puts "other" end
このプログラムをRubyで実行するとなんのエラーも出ないまま「other」が出力される。
これはRuby使いの人にはわりと知られている話で、elseifがif節の中に書かれているメソッドとして構文解釈されて、そこを実行すれば(未定義メソッドなので)ランタイムエラーになるものの、この場合は条件がfalseのためif節は実行されずにランタイムエラーも出ない、というもの。
まあ、そんなわけでNAVERまとめで各プログラミング言語におけるelse ifをまとめてみました。
プログラミング言語 else if まとめ
※Lisp系言語はelseもelse ifも、「if」とカッコの並びだけで表すのでここには載せていません
※仕様としてelse if構文として持たない言語でも、elseの後にif文を書いたら実質的にelse ifが実現できるようなものはelse ifとしています
※誰でも追加できるようになっているのでよろしければ追加しちゃってください