如何使用Ruby创建一个动态变量来执行计数?

如何使用Ruby创建一个动态变量来执行计数?,ruby,Ruby,我有以下变量: call = 0 brake = 0 然后我读了几个文件,每行有一个单词。这些单词/字符串与变量的名称一致 lines.each do |line| line += 1 #line == 'call' therefore you wish to do >> call += 1 end 因为我在程序中有太多的变量,类似的东西会简化很多过程 此外,它还可以在同一程序的其他场景中重复使用。如果您需要快速计数器表: counter = Hash.new(0) 然后您

我有以下变量:

call = 0
brake = 0
然后我读了几个文件,每行有一个单词。这些单词/字符串与变量的名称一致

lines.each do |line|
  line += 1 #line == 'call' therefore you wish to do >> call += 1
end
因为我在程序中有太多的变量,类似的东西会简化很多过程


此外,它还可以在同一程序的其他场景中重复使用。

如果您需要快速计数器表:

counter = Hash.new(0)
然后您可以执行以下操作:

lines.each do |line|
  counter[line.chomp] += 1
end
现在您有了一个行数

chomp
用于删除可能污染匹配的任何换行符


考虑数据,而不是变量。您最初采用的方法取决于动态引用变量,而这种引用有点遗漏了要点。您希望将所有计数器分组在一起,这样您就可以对它们进行迭代,并作为一个整体检查它们的状态。

典型的方法是定义一个散列,然后将计数保留在那里<代码>计数=散列。新建(0);计数[“foo”]+=1非常感谢,这就是我要找的。您可以添加一件事。如果行数据有任何空格,line.chomp将使用空格创建哈希键。line.each do | line |计数器[line.scan(/\w+/).first]+=1end@TheVinspro如果需要,可以使用
scan
将整个输入流分解为单词。