我正在阅读另一个 SO question Enums in Ruby,它有以下代码片段:
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
,对吗?我不确定的是在方法中包含define_method
语句意味着什么enum_attr
。
然后稍后在那篇文章中,它显示了该类的扩展如下
class FileAttributes < Enum
enum_attr :readonly, 0x0001
enum_attr :hidden, 0x0002
end
我不太明白第二部分是做什么的——有人能解释一下吗?