假设我有以下几个类:
class Foo
attr_accessor :name, :age
end
class Bar
def initialize(name)
@foo = Foo.new
@foo.name = name
end
end
我想在 Bar 上定义一个访问器,它只是 foo.name 的别名。非常简单:
def name
@foo.name
end
def name=(value)
@foo.name = value
end
如果只有一个属性,那么这很容易。但是,假设Foo公开了我想要通过Bar公开的多个属性。我不想手动定义每个方法,而是想像这样做,尽管我知道语法不正确:
[:name, :age].each do |method|
def method
@foo.method
end
def method=(value)
@foo.method = value
end
end
那么...定义这样的方法的正确方式是什么?
foo
是一个局部变量,并且在initialize
方法结束时超出了范围。 - sepp2k