私は現在、非常に多くの新しいクラス インスタンスを含むシステムを使用しているため、ここで提案されているように、配列を使用してそれらを割り当てる必要がありました: Create and initialize instances of a class with sequence names
ただし、新しいインスタンスが表示されるたびに、既存のインスタンスを上書きすることなく、常に新しいインスタンスを追加する必要があります。いくつかの検証と既存のコードの修正版が最善の選択肢ではないでしょうか?
これは私のコードです。現在、実行するたびに既存のデータが上書きされます。ステータスが変更された場合は上書きされるようにしたいのですが、そこに1つまたは2つの変数を永続的に保存できるようにしたいです。
E2A: グローバル変数は無視してください。これらはテスト用です。
$allids = []
$position = 0 ## Set position for each iteration
$ids.each do |x| ## For each ID, do
$allids = ($ids.length).times.collect { MyClass.new(x)} ## For each ID, make a new class instance, as part of an array
$browser.goto("http://www.foo.com/#{x}") ## Visit next details page
thestatus = Nokogiri::HTML.parse($browser.html).at_xpath("html/body/div[2]/div[3]/div[2]/div[3]/b/text()").to_s ## Grab the ID's status
theamount = Nokogiri::HTML.parse($browser.html).at_xpath("html/body/div[2]/div[3]/div[2]/p[1]/b[2]/text()").to_s ## Grab a number attached to the ID
$allids[$position].getdetails(thestatus, theamount) ## Passes the status to getdetails
$position += 1 ## increment position for next iteration
end
E2A2: 私のコメントからこれを貼り付けます:
うーん、ちょうど考えていたのですが、以前の値を別の変数にダンプすることから始め、別の変数が新しい値を取得し、それらを繰り返し処理して以前の値と一致するものがあるかどうかを確認しました。それは非常に厄介な方法ですが、||= を使用した self.create は機能するのでしょうか? – ジョー 7 分前