StockListLoaderの不具合 <株入門>

このブログ読んで頂いてる方から、メールいただきました。
今日は、そのご報告を。
 
StockListLoaderを、stock_list_loader_check.rbにてテストするが、
以下の部分、

puts sll.market_sections.include?(“東証2部”) #=> true
sll.filter_by_market_section(“東証1部”)
puts sll.market_sections.include?(“東証2部”) #=> false

filter_by_market_sectionで絞込みをしても、データが更新されない。
最後の sll.market_sections.include?(“東証2部”) がtrueのまま。
 
ああ、ワタクシも見落としていました。やっぱ目検はダメだなぁ。
確認したところ、不具合ですね。
  

def market_sections
@market_sections ||= stock_info.map {|info| info[:market_section]}
end

これでは、
最初に初期化された後は、データが更新されません。
||= ですから。nilのときしかデータ更新しません。
ちなみに、他のプロパティも全て一緒です。
 
これでは、本体のstock_infoはデータ更新されても、
更新後のデータを取り出せません。
||= を = に変えてしまえば解決しますが、
 
毎回処理をさせると重くなってしまうので、避けたい。
そこで、filter_by_market_sectionのようにデータの変更が発生したら、
各プロパティにnilを設定して、呼び出されるときに再度データ操作する。
という風に改造しました。
  
def filter_by_market_section(*sections)
 return self unless sections[0]
 @stock_info = stock_info.find_all do |info|
  sections.include?(info[:market_section])
 end
 clear()
 self
end

private
def clear()
  @codes=nil
  @market_sections=nil
  @units=nil
end
 

これで問題解決です。動作確認もしました。
filter_by_market_sectionを使わなければ、もともと特に問題はないので、
大きな不具合なのかどうかは、判断つきません。
 
以上、不具合の報告でした。
まあ、こういうこともあります。 

 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

 

カテゴリー: 株式投資, 株式投資入門はじめました2016.05 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*