2011-07-05 11 views
10

ハッシュから特定のキーを返す方法を知りたいですか?ハッシュから単一のキーを返しますか?

例:

moves = Hash["Kick", 100, "Punch", 50] 

私は、このハッシュから最初のキー "キック" を返すだろうか?

注:次の関数はハッシュからすべてのキーを返しますが、私はちょうど1つのキーを返すことに興味があります。

moves.keys #=> ["Kick", "Punch"] 
+0

なぜ1つのキーだけを返したいですか? –

+0

私はゲームをデザインしており、printステートメントでハッシュキーを使用しています。したがって、一度に1つのキーにアクセスする必要がありました。 – Dru

+0

ユーザーまたはプログラマーに情報を表示する場合の「印刷ステートメント」? –

答えて

14
moves.keys[0] 

は、最初のキーを与えます。 渡された引数(0、1、...など)を変更することによってすべてのキーを取得できます

7

moves.keys.firstとなります。

を使用でき
+8

Ruby 1.9で動作する可能性がありますが、ハッシュの順番は保持されていますが、1.8では使用できません( "最初の"キーは可能なキーのいずれかになります)。 – Zabba

+0

すばやい応答がありがたいです。ありがとう! – Dru

+0

@Zabba私は以前のバージョンで、リマインダーのおかげで感謝しました。 – Ryanmt

20

first_key, first_value = moves.first 

または同等の:

first_key = moves.first.first 

かなり素敵すぎ:

first_key = moves.each_key.first 

他の可能性を、moves.keys.firstはそのすべてのキーのための仲介配列を作成します潜在的に非常に大きくなる可能性があります。

Ruby 1.8ではハッシュの順番を保証していないので、キーが常に同じであるとは限りません。 Ruby 1.9では、常に同じキー(例では"Kick")を取得します。

+1

'.first.first'が吃音のように見える場合、' moves.first [0] '。あなたの幸運な "オールセブンズ"担当者を壊してしまわないように願っています。 –

関連する問題