Ruby如何访问特定键及其哈希值

时间:2017-05-22 16:13:00

标签: ruby key

所以我试图在这里搜索,但没有找到任何东西。我刚刚开始尝试学习红宝石,并试图建立一个猜谜游戏,它只会提示"国家"那么我们将不得不猜测"区域的正确答案。我们想访问一个例子。

下面是一个示例代码,以帮助可视化我想要做的事情:

places =[
{
  Country: "Japan",
  Area: "Tokyo"
}, {
  Country: "Korea",
  Area: "Seoul"
}]

guess = places.each_value do |guessing|
  print guessing
end

我尝试过做一些事情,说我可以通过.each_value抓住价值但是,它给了我一个错误。

那么我如何为每个用户输入进行某种形式的迭代,但是首先提示实际的特定国家,然后检查该区域?

2 个答案:

答案 0 :(得分:1)

数组没有方法each_value。由于你有一个哈希数组,你需要用each迭代数组,然后用里面的哈希做任何你想做的事。

places =[
{
    Country: "Japan",
    Area: "Tokyo"
}, {
    Country: "Korea",
    Area: "Seol"
}]

guess = places.each do |hash|
  print hash
end

答案 1 :(得分:1)

您可以这样做:

places.each { |hash|
  puts "Guess area for #{hash[:Country]}"
  guess = gets.chomp
  if hash[:Area] == guess
    puts 'correct'
  else
    puts 'incorrect'
  end
}

或者考虑做这样的事情:

places = { "Japan": "Tokyo", "Korea": "Seol" }

places.each { |country, area|
  puts "Guess area for #{country}"
  guess = gets.chomp
  puts area == guess ? 'correct' : 'incorrect'
}

在这里,我们重新构建了您的数据,仅使用哈希值,然后使用三元运算符打印答案的正确性。