私はこの本「TheWell-GroundedRubyist 」を読んでいて、このランダムな質問が私に来ました。Rubyでは、クラスを再度開いてメソッドを上書きできることを知っています。
例:
class A
def x
"First definition of x"
end
def x
"Second definition of x"
end
end
test = A.new
test.x #returns "Second definition of x"
上記の結果に基づいて、クラスメソッドattr_accessor
を自分の(ランダムな)定義で上書きできるかどうか興味がありました。これが私が考えていることです:
class Dummy
attr_accessor :test
def self.attr_accessor(method_name)
puts "Overwrite the default functionality of attr_accessor by printing this text instead."
end
end
d = Dummy.new
d.test #not sure why this returns nil instead of putting my message
Dummy.attr_accessor(test) #fails because of ArgumentError: wrong number of arguments (0 for 2..3)
上記の2つの例では、Rubyをいじくり回して質問し、洞察を得ることで、Rubyをよりよく理解したいと思っています。