トップ «前の日記(2008-10-17) 最新 次の日記(2008-10-20)» 編集

Route 477



2008-10-19

[ruby] 世界のナベアツに Ruby で挑戦する : 記号を減らしてみたバージョン

世界のナベアツに Ruby で挑戦する - Tociyuki::Diary の別バージョン。

require 'nabeatsu'
include Nabeatsu
 
(1.から 40).まで{
  3.の倍数 と 3.がつく数字 の時だけ アホに なって
  5.の倍数 の時だけ 犬っぽく なって
  8.の倍数 の時だけ 気持ちよく なります
}

記号を減らして、より文章っぽくしてみました。

実行結果はこんなんです(手抜き!) warning出まくりですが無視してください(後述)。

[d:\proj\misc]ruby -Ks nabeatsu-run.rb
nabeatsu-run.rb:5: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:5: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:5: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:5: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:6: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:6: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:7: warning: parenthesize argument(s) for future version
nabeatsu-run.rb:7: warning: parenthesize argument(s) for future version
1
2
(アホな 3)
4
(犬っぽい 5)
(アホな 6)
7
(気持ちいい 8)
(アホな 9)
(犬っぽい 10)
11
(アホな 12)
13
14
(アホな 15)
(気持ちいい 16)
17
(アホな 18)
19
(犬っぽい 20)
(アホな 21)
22
23
(アホな 24)
(犬っぽい 25)
26
(アホな 27)
28
29
(アホな 30)
31
(気持ちいい 32)
(アホな 33)
34
(犬っぽい 35)
(アホな 36)
37
38
(アホな 39)
(犬っぽい 40)
[d:\proj\misc]

nabeatsu.rbのソースは http://gist.github.com/17824 からどうぞ。instance_evalの代わりにcatch/throwでやってみました。 「現在の数」が事実上グローバルなのが格好悪いですがまあいいや。

1.9ではどうなるか

んでここからが(実は)本題なのですが、上のスクリプトをruby 1.9で実行するとどうなるでしょうか?

[d:\proj\misc]\prog\ruby-1.9.0-2-i386-mswin32\bin\ruby nabeatsu-run.rb
1
2
(アホな 3)
4
(犬っぽい 5)
(アホな 6)
7
...

なんと、警告が出なくなるんですね。

 parenthesize argument(s) for future version

というメッセージからも分かる通り、 もともとRuby 1.9ではメソッド呼び出しの引数内ではメソッド呼び出しの括弧が省略できなくなる 予定でした。 なぜ、逆に例外を出さないようになったのでしょう?

気になったのでまつもとさんに聞いてみたところ、 「文法を簡単にしようと思ってたんだけど、RubyConfで『括弧の省略を駆使していかに英語っぽい コードを書くか』という内容でまるまる1セッション使った発表があって、諦めた」とのことでした。 なるほど……。