代码之家  ›  专栏  ›  技术社区  ›  michaelmichael

在Ruby中与类对象交互

  •  0
  • michaelmichael  · 技术社区  · 15 年前

    如何与基于Ruby中给定属性创建的对象交互?

    为了提供一些上下文,我正在分析一个文本文件,该文件可能包含几百个条目,如下所示:

    亚洲标准:B00137RNIQ


    上传创建时间:2010-04-09 09:33:45

    上载状态id:3

    我可以用正则表达式解析上述内容,并使用这些数据在“Product”类中创建新对象:

    class Product
      attr_reader :asin, :creation_date, :upload_state, :upload_state_id
    
      def initialize(asin, creation_date, upload_state, upload_state_id)
        @asin = asin 
        @creation_date = creation_date
        @upload_state = upload_state
        @upload_state_id = upload_state_id
      end
    end
    

    解析后,上面的原始文本将存储在如下对象中:

    [#<Product:0x00000101006ef8 @asin="B00137RNIQ", @creation_date="2010-04-09 09:33:45  ", @upload_state="Imported  ", @upload_state_id="3">]
    

    然后如何与新创建的类对象交互?例如,如何提取具有 upload_state_id 第三个?我有种感觉,我将不得不编写类方法,但我有点纠结于从哪里开始。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Gishu    15 年前

    您需要将产品对象存储在集合中。我将使用数组

    product_collection = []
    # keep adding parse products into the collection as many as they are
    product_collection << parsed_product_obj
    
    #next select the subset where upload_state_ud = 3
    state_3_products = product_collection.select{|product| product.upload_state_id == 3}
    

    obj.attribute 就像我上传上面的状态id一样。

    select