ruby - 如何自动命名哈希中的符号?

标签 ruby hash syntax symbols

我一直在制作国际象棋游戏,我需要一些哈希方面的帮助。具体来说,我如何使用迭代器“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/

相关文章:

python - 内联 for 循环

ruby-on-rails - rails : Multiple parameters before do?

javascript - 链接以关闭页面 Rails 4

ruby-on-rails - Ruby/Rails - 运行部署后任务的更好方法?

hash - 加盐密码

c++ - 为哈希表初始化 STL 列表的动态数组(单独链接)

javascript - 这些 JavaScript 语法叫什么? "/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/"

ruby-on-rails - 在 Ruby 中,我可以将数组的每个元素单独传递给接受 *args 的方法吗?

algorithm - 指针值的散列

syntax - 有没有好的替代方案语法?