Ruby 元编程:简化代码与方法管理
1. 自动初始化实例变量
在编写类构造函数时,若需要接收大量参数并将其赋值给实例变量,手动赋值会显得繁琐。例如:
class RGBColor
def initialize(red=0, green=0, blue=0)
@red = red
@green = green
@blue = blue
end
end
为避免这种繁琐的赋值操作,可以定义一个方法来自动初始化实例变量:
class Object
private
def set_instance_variables(binding, *variables)
variables.each do |var|
instance_variable_set("@#{var}", eval(var, binding))
end
end
end
class RGBColor
def initialize(red=0, green=0, blue=0)
set_instance_variables(binding, *local_variables)
end
end
RGBColor.new(10, 200, 300)
# => #<RGBColor:0xb7c22fc8 @red=10, @blue=300, @green=200>
原理分析 :
-
超级会员免费看
订阅专栏 解锁全文
426

被折叠的 条评论
为什么被折叠?



