30

ハッシュを持っています:

h = {:a => "val1", :b => "val2", :c => "val3"}

ハッシュ値を参照できます。

h[:a], h[:c]

しかし、数値インデックスで参照したいと思います:

h[0] => val1
h[2] => val3

出来ますか?

4

3 に答える 3

37

h.values要求された配列を提供します。

> h.values
# ⇒ [
#  [0] "val1",
#  [1] "val2",
#  [2] "val3"
# ]

の答えが正しいとマークされている間、UPDh[h.keys[0]]は、ベンチマークに少し興味があります。

h = {:a => "val1", :b => "val2", :c => "val3"}
Benchmark.bm do |x|
  x.report { 1_000_000.times { h[h.keys[0]] = 'ghgh'} } 
  x.report { 1_000_000.times { h.values[0] = 'ghgh'} }
end  

#
#       user     system      total        real
#   0.920000   0.000000   0.920000 (  0.922456)
#   0.820000   0.000000   0.820000 (  0.824592)

生産性の10%を吐き出しているようです。

于 2013-02-28T08:57:33.680 に答える
35
h = {:a => "val1", :b => "val2", :c => "val3"}
keys = h.keys

h[keys[0]] # "val1"
h[keys[2]] # "val3"
于 2013-02-28T09:19:58.793 に答える
5

では、配列インデックスとハッシュインデックスの両方が必要ですか?

最初のものだけが必要な場合は、配列を使用してください。

それ以外の場合は、次のようにすることができます。

h.values[0]
h.values[1]
于 2013-02-28T08:58:21.623 に答える