【发布时间】:2012-06-26 06:32:43
【问题描述】:
我正在阅读另一个 SO 问题 Enums in Ruby,它有以下代码 sn-p:
class Enum
private
def self.enum_attr(name, num)
name = name.to_s
define_method(name + '?') do
@attrs & num != 0
end
define_method(name + '=') do |set|
if set
@attrs |= num
else
@attrs &= ~num
end
end
end
public
def initialize(attrs = 0)
@attrs = attrs
end
def to_i
@attrs
end
end
据我了解,这是定义一个名为enum_attr 的类方法,对吗?我不确定的是在 enum_attr 方法中包含 define_method 语句意味着什么。
然后在那篇文章的后面,它显示了类被扩展如下
class FileAttributes < Enum
enum_attr :readonly, 0x0001
enum_attr :hidden, 0x0002
end
我不太明白第二部分的作用 - 谁能解释一下?
【问题讨论】:
标签: ruby metaprogramming