【发布时间】:2019-11-16 14:20:47
【问题描述】:
我正在尝试创建一个名为 $player[:abil_mods] 的新哈希,它基于我的 $player[:abils] 哈希。它应该取每个值,减去 10,除以 2,然后将其分配给新哈希中的相同键。但是,它似乎没有编辑$player[:abil_mods] 中的值。
我的代码:
$player = {
abils: {str: 20, con: 20, dex: 14, wis: 12, int: 8, cha: 8},
abil_mods: {}
}
$player[:abil_mods] = $player[:abils].each { |abil, pts| ((pts - 10) / 2).floor }
应该创建以下$player[:abil_mods] 哈希:
abil_mods: {str: 5, con: 5, dex: 2, wis: 1, int: -1, cha: -1}
但它是在创建:
abil_mods: {str: 20, con: 20, dex: 14, wis: 12, int: 8, cha: 8}
【问题讨论】:
-
使用全局
$player的可能性非常大,这不是正确的做法。大多数情况下,人们在不了解变量作用域时使用全局变量,因为全局变量会绕过作用域问题,但它会为代码中的错误和问题打开一个大洞。我建议您花更多时间了解为什么应该使用它们,为什么不使用它们。