我有一个哈希@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 :(得分:3)
要从循环返回值,请使用break value
:
def my_def(port)
@hsh.each do |k, v|
break k if v == port
end
end
一般来说,@ Stefan的评论可以更好地解决这个特定的问题:
def my_def port
@hsh.key port
end
答案 1 :(得分:0)
从each
返回一个值不是惯用的Ruby。最好使用find
,select
等。或者只是:
{a:1, b:2}.invert[2] # => 'b'