我在ruby中有一个数组,我将索引设置为像下面这样的对象的id。Ruby数组和非增量索引
我的第一个问题是:
此代码:
@array = Array.new(@objects.size)
for i in [email protected]
@array[i] = @objects[i].value
end
但是当我做:
@array[@objects[i].id] = @objects[i].value
它说:
未定义的方法[]为无:: NilClass
我试图把100或1000,而不是i
,以确保它不是关于“索引超出范围”,但那些工作,我尝试转换id
使用to_i
为int即使它应该已经是一个整数,但它仍然不起作用。我不明白。
我的第二个问题是:
如果我使IDS的工作,并说Array.new(@objects.size)
成为usless?
我没有使用索引0来确定大小,但ID,所以发生了什么?它初始化索引0...size
到nil
还是仅创建一个最多x个对象的空间?
编辑:
所以有人告诉我这是更好地使用哈希这一点,我同意,但我仍然似乎在相同的情况下(只是改变Array.new(@objects.size)
到Hash.new
)相同的错误
仍似乎给我同样的错误,我试图做p @objects [i] .id它打印2.当我硬编码2的散列键,它的作品,但是当我使用@objects [ i] .id它说未定义的方法[]为零:: NilClass – Ave 2011-04-23 20:38:12
Array和Hash都有一个'[]'方法来查找它们包含的项目。 nil :: NilClass错误可能表明您正在尝试将其用于那些不属于这些内容的东西,所以也许是一个错字或什么?你可以重新发布你使用的代码,也许使用http://pastie.org/,所以它不会在注释格式中丢失 – ctcherry 2011-04-23 20:41:28
听起来就像你在'nil'上调用'[]'。 – 2011-04-23 20:42:40