スクリプトの国際化
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.+ 2.× 3 # => 7 3.× 2.+ 1 # => 9
微妙な空白がミソ。
括弧を省略しないとこうなる。
1.+(2.×(3)) # => 7 3.×(2.+(1)) # => 9
これを DSL にしたりパーサを書いたりして対応したらマルチバイト・メソッド名の意味がないから、ここで終了。
ちなみにパーサを作りたい人は次回のRuby/Rails 勉強会 に来れば Racc で構文解析するセッションがあるはず (予定)