私はRubyで別のSO質問列挙型を読んでいて、次のコードスニペットがありました:
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
この2番目の部分が何をするのかよくわかりません-誰かが説明できますか?