在声明它们的同时推入Ruby数组变量

时间:2013-10-15 17:43:47

标签: ruby arrays nokogiri

基本上我想在传递值时同时添加数组或哈希变量/值 TL; DR - 我不想复制粘贴变量名并用

写N行代码
array_name << var
array_name << another_var
...
array_name << last_var

-
我写了这个。

def describe_card(card_url)
=begin
Parse card.php?id=<ID> into array.
=end
  @card_array = Array.new
  # http://blog.noort.be/2011/02/12/nokogiri-scraping-with-cookies.html
  @card_page = open(card_url, 'Cookie' => 'city=3')
  @card_doc = Nokogiri::HTML(@card_page)

  @company_id = URI(card_url).query.split('id=')[1]
  @company_name = @card_doc.css('.company_name')
  @company_site = @card_doc.css('.company_site')['href']
  @company_character = @card_doc.css('.company_character')
  @company_description = @card_doc.css('.company_description p')
  @company_ads_quantity = @card_doc.css('.ads_name').length
  @company_office_name = @card_doc.css('#filial_name_view')
  @company_office_address = @card_doc.css('#filial_address_view')
  @company_ymap_link = @card_doc.css('.ymaps-logo-link ymaps-logo-link-ru')

  @card_array
end

@card_array为空。我需要填写它。我可以使用<<#push方法编写9行,但有些东西告诉我它不是那么精彩。

此数组可能会与ad_array一起加入,并会插入all_ad_array。 第一次将结果写入CSV对我来说已经足够了。 也许我不确定要使用什么 - 数组或哈希。 (在最终的数组/散列中大约有6000行/行。如果我使用sqlite或一些新的NoSQL数据库,你也可以建议我。)

我记得有一个很好的例子可能使用#map方法。 无论如何,我真的希望你们中的某些人会建议我在这种情况下如何编写更好更优雅的代码。 感谢。

我在那里问,因为如果我再次开始阅读Ruby Book,那将是2-3天或大约一周。但我想写这段代码,因为练习是最好的老师。

2 个答案:

答案 0 :(得分:1)

您可以在将数组分配给实例变量的同时向数组添加值,例如:

@card_array << @company_name = @card_doc.css('.company_name')

答案 1 :(得分:1)

您可以将push与splat运算符

一起使用
array_name.push *array_of_vars

例如:

> [1, 2, 3].push *[4, 5]
=> [1, 2, 3, 4, 5]