我试图从ruby中的哈希表中获取第一个键和值键.我不知道散列的键值,因为它被传递给了方法.我在网上找不到如何将第一个键/值作为单独的哈希表查找.

我知道我可以找到密钥名和值,然后根据它们创建一个新的哈希,但我想知道是否有更简单的方法来做到这一点,这样我就可以立即得到一个哈希.

这是我的代码:

def rps_game_winner(game)

rock_in_hash = game.invert['R']
paper_in_hash = game.invert['P']
scissors_in_hash = game.invert['S']

if(rock_in_hash)
      if(paper_in_hash)
        return paper_in_hash;
      elsif(scissors_in_hash)
        return rock_in_hash
      end
    elsif(paper_in_hash)
      if(rock_in_hash)
        return paper_in_hash
      elsif(scissors_in_hash)
        return scissors_in_hash
      end
    end
        key = game.keys[-1]
        value = game.values[-1]
            winner = {key => value}
    return winner 
    end

game_one = { "Bob" => 'P', "Jim" => 'P' }

puts rps_game_winner(game_one)

这让我得到了正确的结果问题是我不明白为什么它是-1而不是零...

推荐答案

你可以这么做

key, value = hash.first

或者如果你喜欢:

key = hash.keys[0]
value = hash.values[0]

那么也许:

new_hash = {key => value}

Ruby相关问答推荐

MongoDB通过Brew Services";未定义的方法`plist_starting';";

Ruby:一个方法可以返回不同类型的对象吗?

有没有更好的方法来加入剩余不变的子列表?

为什么我的二维 Ruby 数组的多个值会发生变化,尽管只更改了其中一个?

Python 正则表达式是否等同于 Ruby 的原子分组?

为什么安全导航比在 Rails 中使用 try 更好?

对具有相同键的 2 个哈希属性求和

查明 IP 是否在 IP 范围内

在文件中搜索字符串的最佳方法是什么?

ActionController::UnknownFormat

如何在 RSpec 2 中自动加载 spec_helper.rb

如何打破Ruby中的外循环?

我们什么时候在 Rails 中使用 "||=" 运算符?它的意义是什么?

Ruby NOT Rails 中有复数函数吗?

如何按字母顺序对字符串字符进行排序?

使用 RSpec 测试哈希内容

如果公司使用 C++、C# 或 Java 作为应用程序语言,为什么要学习 Perl、Python、Ruby?

Ruby 疯狂:类与对象?

如何重命名 gemset?

相当于 Ruby 的 cURL?