From: "NARUSE, Yui" Date: 2009-03-18T01:49:49+09:00 Subject: [ruby-list:45931] Re: 素朴な質問:なぜif(expr){}は許されないの? 成瀬です。 KIMURA Koichi wrote: >> それは「rubyの言語仕様なのだ」ということでしょうが、 >> それ以外の以外の理由はあるのでしょうか? > > まつもとさんの好み。 > じゃなかったかなあ。 > > 裏を取るために検索したけど見つからなかった。 > Guido みたいに The History of Ruby 書いてください >まつもとさん 「Ruby用語集」に以下のような記述があります。 ------------------ RubyがCやPerlで慣れ親しんだ {}を使わなかったの は以下の理由である * 単文・複文問題の回避 * ぶらさがりelse問題の回避 * 可読性の向上 * begin, caseの構文上の問題 正直言うと、matzはendという名前の変数を使おうとして痛い目に あったことが何度かある。そこで、一度は { }を使っ た文法にしようと検討したが、beginとcase の文法がきれいにまとまらずに断念した。実をいうとこれが最大の 理由であったりする。 http://www.ruby-lang.org/ja/man/html/Ruby_CDD1B8ECBDB8.html#end ------------------ あと、どこかで「endを用いることはしばらく悩んでいたが、 emacsにてendを使ってもインデント等がが可能なことがわかって決心〜」という様な 話も見た記憶もあります。 なお、現在の構文上の話だと、()や;は付けてもたいてい問題ありませんね。 {}は、ブロックを作る以外に、ハッシュリテラルも作るので、 しばしばこちらと衝突してC風にできないケースもあります。 しかし、以下のようなことができちゃったりはしますね。 def if(cond) yield if cond end self.if(1){puts 1} -- NARUSE, Yui