MySQL データベースのいくつかのレコードを表すハッシュを作成しています。ハッシュ キーはデータベース ID フィールドに対応し、ハッシュ値はデータベース名フィールドに対応します。
何が良いのか、その理由は?
配列
これは機能しますが、すべての中間インデックス tp の値を設定する余分なオーバーヘッドがあるように見えるため、Ruby は疎な配列では効率が悪いようです
nil
。fruits = [] fruits[23] = "apple" fruits[109] = "orange" # ... fruits[23429] = "banana"
fixnum をキーとするハッシュ
私はこれが一番好きですが、シンボルをハッシュのキーとして使用するのが最善であるといつも読んでいます。ハッシュのキーとして fixnums を使用するのと同じくらい良いですか? かどうかはわかりませんが
34.hash
、fixnums の性質上、つまり、34.equal? 34
真であるのに対して"hi".equal? "hi"
偽であると考えられます。fruits = { 23 => "apple", 109 => "orange", # ... 23429 => "banana" }
キーとして fixnums のインターンされた文字列表現を持つハッシュ
fixnum を文字列に変換してから記号に変換することで、記号をキーとして使用できます。ただし、この変換は煩わしく、文字列のインターンは効率が悪いと誰かが言ったことがあります。そうですか?彼らは私には醜く見えるだけです。
fruits = { :"23" => "apple", :"109" => "orange", # ... :"23429" => "banana" }
シンボルをキーとするハッシュ
各キーの前にアルファ文字を付けることで、よりきれいなシンボルを取得できます (また、新しい Ruby 1.9 ハッシュ構文も使用できます) が、このソリューションでは変換も必要になります。
fruits = { i23: "apple", i109: "orange", # ... i23429: "banana" }