地震の予測マップと発震日予測

地震発生ヶ所をポイント予測し、度数分布から発震日を確率予測する

Rubyコーディングあれこれ (初めての方むけ:自己増殖するハッシュ)

  本地震の予測マップ・プログラムはRubyで書かれていますが、以前から初めての方むけにコーディングテクのようなモノをまとめておければ、と考えていました。 そこで思い付くままにまとめてみよう、と考えております。

今回は、自己増殖するハッシュです。 (短くまとめます)

 

  あるデータの塊があって処理していたら同じ形式だが新規なデータが検出されたので、そのデータを追加して処理を続行したい、という状況はよくあります。 データを自己増殖させて自分自身で完結させたい、という要求です。 データの塊は配列かハッシュで表現されていると思いますが、このハッシュ版についてです。

 

データは、ハッシュ名 data_hs に入っている、とします。

loop do  # 無限ループ宣言

before = data_hs.size  # 処理前のハッシュサイズを出しておきます

  data_hs.keys.each do |key|  # keys.eachを使ってキーをスキャンします

    new_key, new_item = application(key, hash)  # アプリの処理

        # ^^^新規データnew_itemが検出されたらnew_keyと一緒に戻しています

    if new_key != nil  # new_keyが検出されていたら

      hash_hs[new_key] = new_item  # ハッシュを増殖させてループ脱出

    break end

  end

break if data_hs.size == before  # 新規データitemが検出されなくなるまでloop

end  # 無限ループ終端

 

ここでハッシュを自己増殖させるにはkeys.eachでないと出来ません。 each_keyではエラーとなります。

keys.eachとeach_keyではeach_keyの方が処理は早いのですが、自己増殖させたければkeys.eachを使います。

 

以上です。