我有一个像这样的数组
i = 0
lines.each do |l|
array[i] = l.split(',')
i+=1
end
和我想调用$array[1][3]
像在php,但它没有工作。我已经在谷歌上搜索了几个小时了,还是找不到解决办法。
首先是对代码的一些增强:
# initialize your vars
array = []
lines.each do |l|
array << l.split ',' # use the << operator
end
现在在ruby中,数组的美元符号是不必要的,它表示全局变量,使用它们不是好的做法。
您应该像这样访问变量:array[1][3]
.
你可以让你的代码在ruby1.9中变成一行:
array = lines.each_line.map {|l| l.split ',' }
如果您的问题是调用array[6][3]
返回类似Error: method [] undefined for nil
的东西,那么这样做:
array[6].to_a[3]
当行(6)或列(3)超出范围时,它返回nil
。to_a
确保,即使行超出范围,它仍然给出一个空数组,以便搜索列不会返回错误。