我一直在制作国际象棋游戏,我需要一些哈希方面的帮助。具体来说,我如何使用迭代器“i”自动命名哈希表符号
8.times do |i = 0, x = 0|
i += 1
x += 1
pawnHash[:P] = "P#{i}",Pawn.new(x,2,"P#{i}","black")
end
puts pawnHash
符号应如下所示:
:P1
。但是似乎不可能使用变量“i”来命名哈希
全套 8 个符号应如下所示::P1、:P2、:P3 ... 等
我尝试在声明键/值对时执行 :P + i
,但由于“+”号出现语法错误。
最佳答案
你想让 key 成为一个符号吗?
你可以做 hash["P#{i}".to_sym]
2.0.0-p247 :016 > i = 2
=> 2
2.0.0-p247 :017 > h = {}
=> {}
2.0.0-p247 :018 > h["P#{i}".to_sym] = "value"
=> "value"
2.0.0-p247 :019 > h
=> {:P2=>"value"}
2.0.0-p247 :020 > h.keys.first.class
=> Symbol
或者你可以做 :"P#{i}"
关于ruby - 如何自动命名哈希中的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252508/