2014-02-15 3 views

ответ

0

Я бы сделал, как показано ниже: Enumerable#take:

hash = {"a" => 1, "b" => 2, "c" => 3} 
hash.take(hash.size-1).each do |k,_| 
    p k 
end 
# >> "a" 
# >> "b" 

Или, как показано ниже:

hash = {"a" => 1, "b" => 2, "c" => 3} 
hash.keys.take(hash.size-1) # => ["a", "b"] 
puts hash.keys.take(hash.size-1) 
# >> a 
# >> b 

обновление (как на вопрос ОП - Хорошо теперь не могу печатать только последний элемент в явном виде?)

hash = {"a" => 1, "b" => 2, "c" => 3} 
hash.keys.last # => "c" 

Hash#keys даст вам все ключи от этого хэша как массива. Итак, теперь вы можете вызвать Array#last на этот массив, чтобы получить последний элемент.

+0

Хорошо, как мне напечатать только последний элемент explicitlY? – user3307307

+0

@ user3307307 см. Мое обновление. –

+0

Вижу, спасибо за ответ – user3307307

0
hash = {"a" => 1, "b" => 2, "c" => 3} 

keys = hash.keys 
keys[0..-2] 
#=> ["a", "b"] 

[0..-2] будет индексировать массив от первого к одному до последнего

keys[0..-2].each { |x| puts x } 

последнего элемент в массиве может быть извлечен путем вызова last метода на массиве

keys.last 
#=> "c" 
+0

Хорошо, как я могу напечатать только последний элемент explicitlY? – user3307307

Смежные вопросы