【问题标题】:return value from loop从循环返回值
【发布时间】:2015-11-09 19:54:00
【问题描述】:

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

【问题讨论】:

  • 那不是哈希。无效。
  • 你有什么问题?
  • port = k 替换为return k?
  • @sawa 我的问题是如果发现巧合如何从循环中返回值
  • 要返回给定值的键,请使用@hsh.key(2) #=> :b

标签: ruby loops each


【解决方案1】:

要从循环中返回值,请使用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

【讨论】:

    【解决方案2】:

    each 返回一个值不是 Ruby 的惯用语。最好使用findselect 等。或者只是:

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

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 2015-04-22
      相关资源
      最近更新 更多