802 じゃないけど、なんであのエラーが出るのか理屈がわからない…。>>802 の initialize にダミー引数を渡すと呼ばれるよね。 require 'net/http' require 'uri' class C < Net::HTTP Net::HTTP.version_1_2 def initialize(url, dummy=nil) uri = URI.parse(url) puts "C initialized" super(uri.host, uri.port) end end url = 'www.yahoo.co.jp/' p c = C.new(url)
Net::HTTP を眺めて同じ挙動を再現しようと思ったけど、できないYO! class A;end class << A; alias newobj new; end class A def A.new(foo, bar=nil) a = A.P(foo, bar).newobj(foo, bar) end def initialize(foo, bar=nil) puts "A init."; @foo = foo; @bar = bar end def A.P(foo, bar=nil);self;end end class B < A def initialize(foo)#, bar=nil) puts "B init."; super(1, 2) end end p b = B.new(3)