でRubyの配列のうちの最初の項目を取得します。私はこのようになりますRubyのハッシュを持つハッシュ
h = {"side1"=>["green", "Green"], "side2"=>["verde", "Verde"]}
私はハッシュの特定のキーで最初(または最後)の項目を取得できますか?
でRubyの配列のうちの最初の項目を取得します。私はこのようになりますRubyのハッシュを持つハッシュ
h = {"side1"=>["green", "Green"], "side2"=>["verde", "Verde"]}
私はハッシュの特定のキーで最初(または最後)の項目を取得できますか?
実際、あなたの疑問の例の疑似コードは正しいです。
あなたのハッシュ
h = {
"side1" => ["green", "Green"],
"side2" => ["verde", "Verde"]
}
のためのキーが'side1'
と'side2'
(右hashrocketのそれらの値を持つ)です
ので、h['side2'].first
は、キー'side2'
の値のために、最初の要素を取得することを言います値は["verde", "Verde"]
であり、これは配列です。 h['side2'][0]
も機能します。エイリアスfirst
は便利な方法です。
大きさを知らずに配列の最後の要素を取得するには、負のインデックスを使用します。例えばh['side2'][-1]
であり、この場合はh['side2'][1]
に相当します。
ハッシュのキーは、それが文字列かシンボルかを区別します。つまり、キーが設定されていないので、h[:side2]
はnilを返します。 Railsにはシンボルと文字列を同等のキーとして扱うクラスHashWithIndifferentAccess
があります。
EDIT
私はirb
に私の答えをテストしたことに言及している必要があります。 irb
は、何が機能するかどうかについてのアイデアをテストするのに最適な方法です。あなたのターミナルプロンプトで、irb
と入力し、ルビーで遊んでください。
はい。 puts h["side2"].first
が動作するはずです。私はこれが、Rubyが驚くべきことではなく、実際のコードと同じであることが判明した驚きの原則に従うことを示していると思います。 :-)
私は、任意のテストコードのハッシュから「最初の」エントリを欲しかったという同様の状況に遭遇しました。それはまさにこの質問に関するものではありませんが、私はそれが他の人たちと同じようになるかもしれないと考えて走った検索で出てきました。
もちろん、「最初の項目」はハッシュでは任意ですが、キーメソッドはいくつかの魔法でソートされたすべてのキーのリストを返します。もしそのソート順のように、あなたは
h[h.keys.first]
で「最初」の方法を得ることができ、任意のハッシュキーを持っており、 値ならば、あなたは単にあなたが値の配列を持つことになります
hash.values.first
hash.values.last
hash.keys.first
hash.keys.last
を作ることができますあなたが最初か最後の場合には
'puts h ['side2] .first'は完全に有効な構文です。 'puts h ['side2] [0]'も動作します。 –
私は人々がなぜこの質問をdownvotingするのか分からない。私はstackoverflowには新しいですが、ここでdownvotingはrtfmのようなものです。質問が明白で、あなたがから学ぶことができるなら、それは私の本の中で良いです。 – BF4
^要件に関して、なぜこの施設を必要とするのかわかりません。データ構造が適切に使用され、実装が同様に良好であれば(ハックなしで)。あなたはこれを必要としません。結局あなたはkeyを使ってハッシュ要素を選び、それ以外のものを選ぶか、配列を使います。また、質問は 'ハッシュの最初の要素'にすぎないはずです。ハッシュの配列は別のものを意味します。 – Ninad