我正在尝试创建一个具有如下数据结构的哈希:
hash = {
:a => { :a1 => "x", :a2: => "x", :a3 => "x" },
:b => { :b1 => "x", :b2: => "x", :b3 => "x" },
}
在类函数内部。我对 OO 比较陌生,所以也许我没有正确理解变量范围。
这是我的代码:
class Foo
# Control class args
attr_accessor :site, :dir
# Initiate our class variables
def initialize(site,dir)
@site = site
@dir = dir
#@records = {}
@records = Hash.new { |h, k| h[k] = Hash.new }
end
def grab_from_it
line = %x[tail -1 #{@dir}/#{@site}/log].split(" ")
time = line[0, 5].join(" ")
rc = line[6]
host = line[8]
ip = line[10]
file = line[12]
@records = { "#{file}" => { :time => "#{time}", :rc => "#{rc}", :host => "#{host}", :ip => "#{ip}" } }
end
end
主体:
foo = Foo.new(site,dir)
foo.grab_from_it
pp foo
sleep(10)
foo.grab_from_it
pp foo
它可以工作并成功创建具有我想要的结构的哈希,但是当我再次运行时,它会覆盖现有的哈希。我希望它不断添加,所以我可以创建一个“运行选项卡”。