我是Ruby的新手
我们可以说attr_accessor :bark
是糖衣
def bark
@bark
end
def bark=(val)
@bark = val
end
给定多个参数时会有什么相同的 是吗?
attr_accessor *args
args.each { |attr|
def attr
@attr
end
def attr=(val)
@attr= val
end
}
如果是这样,我怎样才能使用相同的初始化所有给定的参数
和 class_eval (Meta OOP),动态 attr + random_str ?
答案 0 :(得分:1)
东西
attr_accessor *args
args.each { |attr|
def attr
@attr
end
def attr=(val)
@attr= val
end
}
不起作用。它将创建一个方法“attr”,它返回实例变量“@attr”的值。我想那不是你想做的,对吧?你应该做
args.each do |arg|
self.define_singleton_method arg do self.instance_variable_get arg end
end
对于getter和几乎相同的东西为setter。
我不知道你的意思如果是这样的话我怎样才能使用相同的初始化所有给定的参数 并在class_eval(Meta OOP)中使用动态attr + random_str?
问候