gpt4 book ai didi

ruby - Ruby 类中的命名空间方法

转载 作者:行者123 更新时间:2023-12-04 17:04:23 25 4
gpt4 key购买 nike

我正在使用 Ruby 的元编程方法在一个类中创建一堆方法。类内OmekaItem有很多这种形式的方法 dc_titledc_subject , 还有一堆这种形式的方法 itm_field1itm_field2 .我想更好地对这些方法进行分组。理想情况下,给定一个名为 item 的类的实例,我想这样调用方法:

  • item.dublin_core.title
  • item.item_type_metadata.field

  • 等等。有没有办法做到这一点?

    This question有我正在使用的代码。

    最佳答案

    以下内容对您有用吗?

    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 动态生成作为适当的。

    关于ruby - Ruby 类中的命名空间方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022232/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com