如何检查字符串是否等于散列中的任何键并根据结果编辑另一个散列
How to check if a string is equal to any key within a hash and editing another hash based on the result
我正在尝试为角色扮演游戏编写角色创建器,但有两件事我有疑问。
- 如何检查字符串是否等于散列中的任何键,在这种情况下,如果
race_choice
等于 races
中的任何键?
- 如何在不同的散列中更改另一个键的值以等于 key/value 对,其中包含的键等于我的字符串,在这种情况下,如何使
player[race]
的值等于到 key/value 对,其中 race_choice
等于它的键?
这是我的代码的简化部分:
player = {
race: {}
}
races = {
human: {key1: "value", key2: "value"},
elf: {key1: "value", key2: "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
我希望玩家 select 从种族列表中选择他们的种族,然后将该种族及其相关信息添加到玩家的角色中。
您可以使用 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
,否则 - 您要么随机化,要么处理错误。
我正在尝试为角色扮演游戏编写角色创建器,但有两件事我有疑问。
- 如何检查字符串是否等于散列中的任何键,在这种情况下,如果
race_choice
等于races
中的任何键? - 如何在不同的散列中更改另一个键的值以等于 key/value 对,其中包含的键等于我的字符串,在这种情况下,如何使
player[race]
的值等于到 key/value 对,其中race_choice
等于它的键?
这是我的代码的简化部分:
player = {
race: {}
}
races = {
human: {key1: "value", key2: "value"},
elf: {key1: "value", key2: "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
我希望玩家 select 从种族列表中选择他们的种族,然后将该种族及其相关信息添加到玩家的角色中。
您可以使用 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
,否则 - 您要么随机化,要么处理错误。