在Ruby中与类对象交互

在Ruby中与类对象交互,ruby,Ruby,如何与基于Ruby中给定属性创建的对象交互 为了提供一些上下文,我正在分析一个文本文件,该文件可能有几百个条目,如下所示: ASIN:B00137RNIQ -------------------------状态信息-------------------- 创建上传:2010-04-09 09:33:45 上载状态:已导入 上载状态id:3 我可以用正则表达式解析上述内容,并使用这些数据在“Product”类中创建新对象: 解析后,上面的原始文本将存储在如下所示的对象中: [#<Produc

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

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

ASIN:B00137RNIQ

-------------------------状态信息--------------------
创建上传:2010-04-09 09:33:45
上载状态:已导入
上载状态id:3

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

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

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

然后如何与新创建的类对象交互?例如,我如何提取
upload\u state\u id
为3的对象的所有创建日期?我觉得我将不得不编写类方法,但我有点纠结于从哪里开始。

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

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}
产品集合=[]
#尽可能多地将解析产品添加到集合中

产品系列很酷。我已经添加了
product\u集合
数组作为类变量,并在初始化期间将每个产品添加到其中。现在完全有道理了。这不是你问题的答案,但在这种情况下,结构就足够了。完整的类可以写成:Product=Struct.new(:asin,:creation\u date,:upload\u state,:upload\u state\u id)我从代码中删除了一些类方法和变量以避免问题的混乱。否则,是的,我相信结构就足够了。
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}