スクリプトの国際化

ruby-list ML で「変数名、関数名に日本語を」というのがあったので、ネタでやってみた。

# -*- coding: utf-8; -*-

class Numeric
  def +(o) self + o end
  def −(o) self - o end
  def ×(o) self * o end
  def ÷(o) self / o end
end

底辺 = 3
高さ = 4
底辺.× 高さ.÷ 2   # => 6

余計な . がカッコワルイ。

演算子の再定義はできても、新しい演算子を定義することはできないので仕方ない。

演算子ではないので、結合順序もメソッドと同じ。

1.+ 23        # => 7
32.+ 1        # => 9

微妙な空白がミソ。

括弧を省略しないとこうなる。

1.+(2.×(3))      # => 7
3.×(2.+(1))      # => 9

これを DSL にしたりパーサを書いたりして対応したらマルチバイト・メソッド名の意味がないから、ここで終了。

ちなみにパーサを作りたい人は次回のRuby/Rails 勉強会 に来れば Racc で構文解析するセッションがあるはず (予定)