2013-03-19 70 views
0

我无法弄清楚我的代码有什么问题,你能帮我吗?Ruby未定义的方法`每个'

这是我班的构造函数:

def initialize(hash_table_size) 
    @size = hash_table_size 
    @table = Array.new(hash_table_size) { LinkedList.new } 
end 

这个方法在类:

def to_a 
    arr = Array.new 
    @table.each { |list| list.each { |o| arr << o } } 
    arr 
end 

这是我的 “每个” 在LinkedList类方法:

def each 
    if @length > 0 
    item = @head 
    begin 
     yield item.object 
     item = item.next 
    end until item.nil? 
    end 
end 

这就是我从单元测试中得到的结果:

1) Error: 
test_initial_size_3(HashSetTest): 
NoMethodError: undefined method `each' for 3:Fixnum 
    C:/Users/Ajax/My Documents/Aptana Studio 3 Workspace/alg_du1_jan_svec/hash_set.rb:34:in `block in to_a' 
    C:/Users/Ajax/My Documents/Aptana Studio 3 Workspace/alg_du1_jan_svec/hash_set.rb:34:in `each' 
    C:/Users/Ajax/My Documents/Aptana Studio 3 Workspace/alg_du1_jan_svec/hash_set.rb:34:in `to_a' 
    C:/Users/Ajax/My Documents/Aptana Studio 3 Workspace/alg_du1_jan_svec/hash_set_test.rb:14:in `test_initial_size_3' 

1 tests, 3 assertions, 0 failures, 1 errors, 0 skips 
+0

你可以发布你的单元测试吗? – Andbdrew 2013-03-19 04:34:15

+0

@Andbdrew http://pastebin.com/bL22k8qt,我只使用第一个部分 – Silverlaine 2013-03-19 05:00:12

回答

1

这意味着LinkedList.new在该方法initialize正在返回3,成为的@table的元件,并且代入块变量的方法to_alist的。

+0

谢谢,我想我明白了,但我仍然不知道如何改变它以使其工作。这是我的unittest btw http://pastebin.com/bL22k8qt我只使用第一个的一部分。 – Silverlaine 2013-03-19 05:10:11

相关问题