我正在使用Ruby的元编程方法在类中创建一堆方法。在课程OmekaItem
中,此表单dc_title
和dc_subject
有许多方法,此表单itm_field1
和itm_field2
有很多方法。我想更好地分组这些方法。理想情况下,给定一个名为item
的类的实例,我想以这种方式调用方法:
item.dublin_core.title
item.item_type_metadata.field
等等。有没有办法做到这一点?
This question有我正在使用的代码。
答案 0 :(得分:1)
以下内容适用于您?
class OmekaItem
class DublinCore
def initialize(omeka_item)
@omeka_item = omeka_item
end
def title
@omeka_item.dc_title
end
def subject
@omeka_item.dc_subject
end
end
class ItemTypeMetadata
def initialize(omeka_item)
@omeka_item = omeka_item
end
def field1
@omeka_item.itm_field1
end
def field2
@omeka_item.itm_field2
end
end
def dublin_core
@dublin_core ||= DublinCore.new(self)
end
def item_type_metadata
@item_type_metadata ||= ItemTypeMetadata.new(self)
end
end
DublinCore
和ItemTypeMetadata
上的方法可以根据需要使用define_method
动态生成。