编辑:问题是无法获取散列内数组的数量,因此它可以是x =数组量。所以它可以用作function.each_index {| x |代码}无法将符号转换为散列表中的整数
尝试使用行的量的指数为依赖于有多少数据从CSV文件拉出重复次数的动作X量的一种方式。
终端发出
=> Can't convert symbol to integer (TypeError)
完全错误:
=> ~/home/tests/Product.rb:30:in '[]' can't convert symbol into integer (TypeError) from ~home/tests/Product.rub:30:in 'getNumbRel'
from test.rb:36:in '<main>'
功能是执行的操作是:
def getNumRel
if defined? @releaseHashTable
return @releaseHashTable[:releasename].length
else
@releaseHashTable = readReleaseCSV()
return @releaseHashTable[:releasename].length
end
end
CSV数据拉只是一个数组的哈希,没什么时髦的。
def readReleaseCSV()
$log.info("Method "+"#{self.class.name}"+"."+"#{__method__}"+" has started")
$log.debug("reading product csv file")
# Create a Hash where the default is an empty Array
result = Array.new
csvPath = "#{File.dirname(__FILE__)}"+"/../../data/addingProdRelProjIterTestSuite/releaseCSVdata.csv"
CSV.foreach(csvPath, :headers => true, :header_converters => :symbol) do |row|
row.each do |column, value|
if "#{column}" == "prodid"
proHash = Hash.new { |h, k| h[k] = [ ] }
proHash['relid'] << row[:relid]
proHash['releasename'] << row[:releasename]
proHash['inheritcomponents'] << row[:inheritcomponents]
productId = Integer(value)
if result[productId] == nil
result[productId] = Array.new
end
result[productId][result[productId].length] = proHash
end
end
end
$log.info("Method "+"#{self.class.name}"+"."+"#{__method__}"+" has finished")
@productReleaseArr = result
end
你可以加回溯 – krichard
@kritchard mhm也许是noob问题,但究竟是回溯? – samayres1992
整个错误消息。 –