動かざることバグの如し

近づきたいよ 君の理想に

Rubyは何故 if else ではなく if elsif なのか

背景

例のごとくツイッターしてたらこんなツイートが流れてきた。

これは他の言語やってて、そのあとにRubyやりだすと多くの人が疑問に浮かべる話だと思う。

実際、自分もJavascriptPHPJavaのあとにRuby触ったのでよくシンタックスエラーさせてた。

公式回答が

それに対してなんとRubyの生みの親ことMatzがリプライで回答していた。

冒頭の愚痴を投げていた人も恐縮していたが、当然だと思う(まさか拾われるとは思わない

つまりRubyでは文字数最短と発音のバランスを取った結果elsifになったというわけらしい

なんていうか、Rubyは他の言語と違って if に {} をブロックで囲まないので、else if の文法解釈ができないんだと思う。

実際Rubyは倒置ifといって val = 1 if 10 > 2 みたいな書き方もできてしまうし。。

実際以下のコードは正常に実行できるし、1が出力される。

if true
    puts 1
else if true
    puts 2
else if true
    puts 3
else
    puts 4
end end end

どう見ても最後のendが連続で続いているのがキモいが、インデントを直すと要は以下と同じである。

if true
  puts 1
else
  if true
    puts 2
  else
    if true
      puts 3
    else
      puts 4
    end
  end
end

2018年でも同じことをMatzは言っている。まぁPerlの流れは大きい気がする

要は慣れですかね???????(適当

ぶっちゃけIDE使ってると補完されるからそこまで気にならなくなるっていう

参考リンク