Вернуть один ключ из хэша? - PullRequest
11 голосов
/ 06 июля 2011

Хотелось бы узнать, как вернуть определенный ключ из хэша?

Пример:

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

Как бы я вернул первый ключ "Kick" из этого хэша?

ПРИМЕЧАНИЕ. Мне известно, что следующая функция вернет все ключи из хэша, но мне просто интересно вернуть один ключ.

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

Ответы [ 3 ]

20 голосов
/ 06 июля 2011

Вы можете использовать:

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" в вашем примере).

16 голосов
/ 06 июля 2011
    moves.keys[0] 

даст вам первый ключ. Вы можете получить все ключи, изменив переданный аргумент (0, 1, ... и т. Д.)

8 голосов
/ 06 июля 2011

moves.keys.first выполнит это.

...