Ruby 1.9の時点で、ハッシュは非常にクールな挿入順序を保持しています。最後のキーと値のペアにアクセスするための最良の方法を知りたいです。
私はこれを行ういくつかのコードを書きました:
hash.values.last
これは機能し、非常に簡単に理解できますが、中間値(値の配列)を介してではなく、最後の値に直接アクセスすることはおそらく可能です。それは...ですか?
何も組み込まれていません。しかし、もしあなたがそんなに傾いているなら、あなたは1つをモンキーパッチすることができます(もちろん、通常は推奨されません):
class Hash
def last_value
values.last
end
end
その後:
hash.last_value
ハッシュには「最初の」メソッドがありますが、配列モードで最初のペアを返します。最後に、次のことを試してください。
my_hash.to_a.last
これは、「最初のメソッド」のような配列モードで最後のペアを返します
私が自分で使用しているもう1つの選択肢:
hash[hash.keys.last]
これは、ハッシュの最後の要素に直接値を割り当てたい場合にうまく機能します。
2.4.1 :001 > hash = {foo: 'bar'}
=> {:foo=>"bar"}
2.4.1 :002 > hash[hash.keys.last] = 'baz'
=> "baz"
2.4.1 :003 > hash.values.last = 'bar'
NoMethodError: undefined method `last=' for ["baz"]:Array
Did you mean? last
from (irb):3
from /home/schuylr/.rvm/rubies/Ruby-2.4.1/bin/irb:11:in `<main>'
非常に大きなハッシュに対してこれを実行しました。
hash.reverse_each.with_index do |(_, value), index|
break value if (index == 0)
end