循环返回值

时间:2015-08-17 08:36:17

标签: ruby loops each

我有一个哈希@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}

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。最好使用findselect等。或者只是:

{a:1, b:2}.invert[2] # => 'b'