将对象添加到数组的数组中

发布于 2024-12-11 09:02:15 字数 746 浏览 0 评论 0原文

我正在尝试将一个对象添加到数组数组中,但是当我这样做时,我在数组单元测试数组中收到一个错误,指出:-“nil:NilClass 的未定义方法‘has_key’”。但是,如果我尝试将字符串或数字添加到数组的数组中,它绝对可以正常工作。

我像这样设置了我的数组

@array_of_array= Array.new(5) { Array.new(3) }

现在如果我尝试这样做

@array_of_array[0][0] = MyObject.new

然后如果我针对 @array_of_array 运行单元测试,我会收到错误。

但如果我尝试这样做

@array_of_array[0][0] = 'Test'

就没有问题。

--已编辑---

这是失败的测试

it "should place object in correct starting position" do
array_of_array= Array.new(5) { Array.new(3) }
array_of_array[1][0] = MyObject.new
array_of_array.should eql('fail on purpose..want to see output')

结束

我是 ruby​​ 新手,所以不确定哪里出了问题。谢谢

I am trying to add an object to an array of arrays, but when i do, i am recieving an error in my array of array unit tests, stating :- "undefined method 'has_key' for nil:NilClass". However, if i try and add a string or number to the array of array, it works absolutely fine.

I set up my array of arrays like this

@array_of_array= Array.new(5) { Array.new(3) }

Now if I try to do this

@array_of_array[0][0] = MyObject.new

Then if I run my unit tests against @array_of_array, i get the error.

But if I try to do this

@array_of_array[0][0] = 'Test'

Theres no problem.

--Edited---

Heres failing test

it "should place object in correct starting position" do
array_of_array= Array.new(5) { Array.new(3) }
array_of_array[1][0] = MyObject.new
array_of_array.should eql('fail on purpose..want to see output')

end

Im new to ruby, so unsure of where im going wrong. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

dawn曙光 2024-12-18 09:02:15

正如 Claw 所说,该错误可能意味着您的 MyObject.new 语句由于某种原因返回 nil 对象。然后您尝试调用该 nil 对象的函数“has_key”。

如果您使用 .new! 而不是 .new ,您的 MyObject 类是否会引发异常?如果是这样,您就会明白为什么它无法返回正确的 MyObject 对象。

编辑

要捕获 MyObject 模型的“新”方法中的异常,您可以执行以下操作:

def new
    begin
        #whatever is done in this method
    rescue => exception
        puts exception.message
    end
end

Like Claw said, the error probably means that your MyObject.new statement is returning a nil object for some reason. Then you're trying to call the function 'has_key' of that nil object.

Does your MyObject class throw an exception if you use .new! instead of .new ? If so, you could see why it's failing to return a proper MyObject object.

Edit

To catch an exception inside your 'new' method for the MyObject model, you could do something like:

def new
    begin
        #whatever is done in this method
    rescue => exception
        puts exception.message
    end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文