2015-08-17 7 views
-9

У меня есть хэш-@hsh={a:1,b:2} и хотите вернуться в порт , но он возвращается ко мне {a:1,b2}возвращаемое значение из цикла

def my_def(port) 
    @hsh.each do |k,v| 
     if v == port 
     port = k 
     end 
    end 
    end 

Моя проблема, когда я делаю my_def(2) он не возвращает мне 'b' и я

получил весь хэш назад =>{a:1,b:2}

+0

Это не является хэш. Это неверно. – sawa

+0

В чем вопрос? – sawa

+3

Заменить 'port = k' на' return k'? – ndn

ответ

3

Для возврата значения из цикла, используйте break value:

def my_def(port) 
    @hsh.each do |k, v| 
    break k if v == port 
    end 
end 

В общем, @ комментарий Стефана решает эту частности проблема лучше:

def my_def port 
    @hsh.key port 
end 
0

Возвращение значения из each не идиоматических Рубин. Лучше использовать find, select и т.д. Или просто:

{a:1, b:2}.invert[2] # => 'b' 
Смежные вопросы