class Object
attr_reader :foo
def initialize
@foo = 'bar'
end
end
Object.new.foo # => 'bar'
''.foo # => nil
//.foo # => nil
[].foo # => nil
Я хочу, чтобы они все вернулись 'bar'
Знаю, что вы уже можете сделать это:
class Object
def foo
'bar'
end
end
Но я специально хочу инициализировать переменную состояния. Также обратите внимание, что это не работает.
class String
alias_method :old_init, :initialize
def initialize(*args)
super
old_init(*args)
end
end
class Object
attr_reader :foo
def initialize
@foo = 'bar'
super
end
end
''.foo # => nil
Также не это:
class String
attr_reader :foo
def initialize
@foo = 'bar'
end
end
''.instance_variables # => []
Я начинаю думать, что это на самом деле невозможно.