正在使用roo
来处理 excel 表格 (主要是统计里边的工时),现在想建一个 hash 表,关键字是参与过的项目,值是一个数组,数组中按下标对应了其每个月在该项目上所花的工时
如"xx web design => [0,2,3,10,12]"
就表明了在该人参与了xx web design
的项目,并且在1,2,3,4,5月份
花在这项目上的工时分别为0,2,3,10,12
.
weeks=Hash.new(Array.new(26){|i| i*0 })
这样声明了 hash 表,不清楚这样是否正确,但后来改之后还是有问题,下面叙述
project.each do |_p| ##project 存储了改人所参与过的所有项目,没有重复的条目
p _p ##debug 看的
p weeks[_p]
##
for i in ..... #遍历excel行
if s.cell(i,5)==_p #选择与项目名称一致的
#blah,....
#计算工时
##
weeks[_p][week-1]= weeks[_p][week-1]+sum #week是上边计算得到的周数,sum是该周的工时
end
end
奇怪的是对第一轮计算完后,即到了下一个_p 时,weeks[_p] 并不是初始化的全零数,而是第一轮的结果,而后结果就全错了。
我试着在project.each do |_p|
之下紧接着再把_p
对应的数组清零一次,如:
project.each do |_p|
p _p
p weeks[_p]
weeks[_p].each_index do |i|
weeks[_p][i]==0
end
p "clear", weeks[_p]
无果,clear
之后的weeks[_p]
与之前一样,是上一个_p
的运算结果(其对应的数组)。
请问这是为什么?
十分感谢。