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

相關問題