【问题标题】:Ruby undefined method `each'Ruby未定义方法“每个”
【发布时间】:2013-03-07 15:37:50
【问题描述】:

我无法弄清楚我的代码有什么问题,请您帮帮我吗?

这是我的类的构造函数:

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

这就是我从 unittest 得到的:

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

【问题讨论】:

  • 你能发布你的单元测试吗?
  • @Andbdrew pastebin.com/bL22k8qt,我只使用了第一个的一部分

标签: ruby arrays list set each


【解决方案1】:

表示initialize方法中的LinkedList.new返回3,成为@table的一个元素,代入to_a方法的块变量list中。

【讨论】:

  • 谢谢,我想我明白了,但我仍然不知道如何更改它以使其正常工作。这是我的单元测试 btw pastebin.com/bL22k8qt 我只使用了第一个单元的一部分。
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 2012-03-13
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多