链接列表的此ruby代码中的未定义方法错误

时间:2015-04-17 14:18:49

标签: ruby-on-rails ruby linked-list

基本问题,但我不明白为什么这段代码在print_values上产生“未定义的方法”错误......

class LinkedListNode
    attr_accessor :value, :next_node

    def initialize(value, next_node=nil)
        @value = value
        @next_node = next_node
    end

    def print_values(list_node)
        print "#{list_node.value} --> "
        if list_node.next_node.nil?
            print "nil\n"
            return
        else
            print_values(list_node.next_node)
        end
    end
end

node1 = LinkedListNode.new(37)
node2 = LinkedListNode.new(99, node1)
node3 = LinkedListNode.new(12, node2)

print_values(node3)

2 个答案:

答案 0 :(得分:2)

print_values是实例方法,因此您需要调用实例 例如node1.print_values(node1) 但从逻辑上讲,它应该是类方法,即

 def self.print_values(list_node)
   #printing logic comes here
 end

,并将其称为LinkedListNode.print_values(node_from_which_you want_to_print_linked_list)

答案 1 :(得分:0)

print_value是类LinkedListNode的方法。您无法直接在课堂外访问它。你需要一个类对象。

node3.print_values(node3)
# 12 --> 99 --> 37 --> nil

Learn more