如何检查字符串是否等于哈希中的任何键,以及如何根据结果编辑另一个哈希

我正在尝试为RPG编写角色创建器,但是我有两点疑问。

  1. 在这种情况下,如果race_choice等于races中的任何键,如何检查字符串是否等于哈希中的任何键?
  2. 如何更改另一个哈希中的另一个键的值,使其等于包含与我的字符串相等的键的键/值对,在这种情况下,如何使player[race]的值等于键/ race_choice等于其键的值对?

这是我的代码的简化部分:

player = {
  race: {}
}

races = {
human: {key1: "value",key2: "value"},elf: {key1: "value",dwarf: {key1: "value",key2: "value"}
}

loop do
  puts "What's your race?"
  race_choice = gets.chomp.downcase
  if race_choice == races[:race].to_s              #I know this code doesn't work,but hopefully it
    player[:race].store(races[:race,info])        #gives you a better idea of what I want to do.
    puts "Your race is #{player[:race[:race]]}."
    break
  elsif race_choice.include?('random')
    puts "Random race generation goes here!"
    break
  else
    puts "Race not recognized!"
  end
end

我希望玩家从种族列表中选择种族,然后将该种族及其相关信息添加到角色中。

chaomi87 回答:如何检查字符串是否等于哈希中的任何键,以及如何根据结果编辑另一个哈希

您可以使用race_choice字符串访问races,然后使用结果:

race = races[race_choice.to_sym]
if race
  player[:race] = race
elsif race_choice.include?('random')
  #...
else
 #...
end

您将race_choice转换为带有to_sym的符号(因为您的races哈希值已用符号索引了)。如果种族存在于哈希中,则将其分配给player_race,否则不分配-您可以随机分配或处理错误。

本文链接:https://www.f2er.com/3131143.html

大家都在问