From: ARIMA Yasuhiro Date: 2000-12-02T21:52:19+09:00 Subject: [ruby-list:26268] Re: [ruby-talk:6666] Suggestion for addition to Begin/End syntax 有馬です。 drew@localhost.localdomain (Andrew D. McDowell) wrote "[ruby-talk:6666] Suggestion for addition to Begin/End syntax" end に補足? をつけられると嬉しいという話が ruby-talk で出てるのですが、 英語の読解表現力的にチャレンジされている人なので、こっちに書かせてください。 興味を持たれた方は、talk の方も見てください。 if expr に対して end if def foo() に対して end def end foo end def foo と書けたらいいなという話です。 まず、ruby-mode 等の支援がないところを考えると、例えば foo を bar に 変えたいときに "end foo", "end def foo" だと2個所変更する必要が あるのでいやですが、"end def" は、嬉しいかと思います。 具体的には end [def,class,module,do,if,unless,while,until,case] 。 すでにまつもとさんからは、ruby-0.6 以前は end if が使える仕様だったけど if 修飾などを導入したときに削除したとのフォローがありました。 でも、if 修飾と end if は矛盾しない方法もあるかと思います。 現状では、end if で行末(等)ならば、評価するべき式を次の行に求めていますが、 最低、ひとつの式を if の直後に必要とすれば違いが区別できます。 begin puts "hello" end if true and true puts if expr ["A"] else ["B"] end if.shift find . -name '*.rb' -exec grep -n ' if *$' {} \; してみたところでは if 修飾で次の行に式を書くスクリプトは少なそうなので、既存スクリプトにも あまり影響はないと思いますが、parser の改造のコストが見合うものなのかは わかりません。 -- 有馬 康弘