ruby - 如何检查字符串是否等于哈希中的任何键并根据结果编辑另一个哈希
问题描述
我正在尝试为 RPG 编写角色创建器,但有两件事我有疑问。
- 如何检查字符串是否等于散列中的任何键,在这种情况下,是否
race_choice
等于 中的任何键races
? - 如何在不同的哈希中更改另一个键的值以等于包含等于我的字符串的键的键/值对,在这种情况下,如何使' 的值等于等于
player[race]
其的键/值对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
我希望玩家从种族列表中选择他们的种族,然后将该种族及其相关信息添加到玩家的角色中。
解决方案
您可以使用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
,如果没有 - 您要么随机化,要么处理错误。
推荐阅读
- amazon-web-services - AWS CloudWatch - 100% CPU 利用率
- sql - 使用 OpenXML 的 SQL 插入导致空数据
- sql - 每个 zone_id 的 sql 最大日期
- ffmpeg - 有没有办法将输入视频通过管道传输到 ffmpeg?
- http - Flutter http post给出错误但在邮递员中有效
- php - 获取 URL 的最后一个字符串
- security - Flutter - 如何隐藏或更改小部件,如最近使用的应用程序概述中所示
- c# - MVC 未找到链接的局部视图
- python - 如何在 python opencv GUI 中打印一些功能?
- peoplesoft - BI Publisher 条件字段屏蔽