読者です 読者をやめる 読者になる 読者になる

Kernel#new

Javaとかやった後にRubyを触ってうっかりnewを先にタイプしてしまうときに…

module Kernel
  def new(const, *args, &block)
    const.__send__ :new, *args, &block
  end
end

arr = new Array
   #=> []
arr = new Array, 3
   #=> [nil, nil, nil]
arr = new(Array, 3) {|i| i = 0 }

引数がないケースであれば見た目的に問題ないけど、やっぱり引数がついたりブロックがつくとつらい…。