这是我的代码:
@games.each do |game| #@games is an array
#definitely working
game = Hash.new 0
end
正如你猜测的那样......它不起作用。没有错误。只是这样的变量不存在。我想要通过游戏标题调用我的哈希。很多,因为有240个标题。
我很确定我必须把这个“游戏= Hash.new 0”从块中删除,但说实话,我没有任何想法。
问候。
答案 0 :(得分:1)
变量game
包含数组的每个元素,由each
逐个传递,所以你应该试试这个:
games_hash = {}
@games.each do |game|
games_hash[game] = 0
end
答案 1 :(得分:0)
您可以使用each_with_object。
games_hash = @games.each_with_object({}) do |game, hash|
hash[game] = 0
end
您也可以使用0初始化哈希。
games_hash = @games.each_with_object(Hash.new(0)) do |game, hash|
hash[game]
end
答案 2 :(得分:0)
这是一个引用问题:
在each
区块内,game
变量是对游戏的引用,但它不是游戏本身。
当您将新实例分配给game
,即:('game = Hash.new')时,您正在更改该引用的值。现在game
没有指向阵列中的一个游戏,但现在它指向一个新的哈希。
我不确定这是否是你想要的,试试这个:
games_hash = {}
@games.each do |game|
games_hash[game] = {}
end