.new 嫌い

http://d.hatena.ne.jp/m-hiyama/20060317/1142559097

に共感を覚えつつ。 Ruby って Kernel#String とか定義してあるのね。 require 'complex' すると Kernel#Complex とかも組み込まれる、と。まぁ必要なクラスだけ定義するのが正解なんだろうけど、これって別に言語レベルでシンタックスシュガーにしてくれてもいいレベルな気もするなーと思った。あとついでにライブラリで実現できるようなものを作ってみた。

def method_missing(name, *args)
  if (name.to_s =~ /^[A-Z]/)
    Kernel.const_get(name).send(:new, *args)
  else
    super(*args)
  end
end

if __FILE__ == $0
  p Time.new
  p Time()
  p File('ctor.rb', 'r')
end

使わなさそう。

あと id:sumim さんのコメント (http://d.hatena.ne.jp/m-hiyama/20060317/1142559097#c1142565271) を見て C++ も operator , のオーバーロードでキテることやってたよなとか。

http://www.codeproject.com/vcpp/stl/PGIL.asp

map<string,int> m;
set_map( m ) += "fish", 1, string( "horse" ), 2;
set_map( m )  = "cow", 1;

すてき。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h