1

基本的に、値を渡すと同時に、配列またはハッシュ変数/値に追加したいと考えています。
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空です。私はそれを埋める必要があります。<<orメソッドを使用して 9 行を記述できます#pushが、それほど華麗ではないことがわかります。

この配列はおそらく結合ad_arrayされ、に挿入されall_ad_arrayます。初めて結果をCSVに書き込むだけで十分です。たぶん、何を使用すればよいかわかりません-配列またはハッシュ。(そして、最終的な配列/ハッシュでは約6000行/行です。sqliteまたは新しいNoSQLデータベースを使用する必要があるかどうかもアドバイスできます。)

おそらく#mapメソッドを使用した良い例があったことを覚えています。とにかく、この状況でもう少し優れたエレガントなコードを書く方法を誰かがアドバイスしてくれることを本当に願っています. ありがとう。

Ruby Book をもう一度読み始めるとしたら、2 ~ 3 日または約 1 週間かかるので、そこで質問しています。しかし、練習は最高の教師であるため、このコードを書きたいと思います。

4

2 に答える 2

1

pushスプラット演算子で使用できます

array_name.push *array_of_vars

例えば:

> [1, 2, 3].push *[4, 5]
=> [1, 2, 3, 4, 5]
于 2013-10-15T17:50:57.713 に答える