此 ruby 链表代码中的未定义方法错误
Undefined Method error in this ruby code for linked lists
基本问题,但我不明白为什么此代码会在 print_values...
上产生 "undefined method" 错误
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)
print_value
是 class LinkedListNode
的一种方法。您无法在 class 之外直接访问它。您需要一个 class 对象。
node3.print_values(node3)
# 12 --> 99 --> 37 --> nil
print_values
是实例方法所以你需要调用一个实例
例如node1.print_values(node1)
但逻辑上应该是 class 方法,即
def self.print_values(list_node)
#printing logic comes here
end
然后,像 LinkedListNode.print_values(node_from_which_you want_to_print_linked_list)
这样称呼它
基本问题,但我不明白为什么此代码会在 print_values...
上产生 "undefined method" 错误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)
print_value
是 class LinkedListNode
的一种方法。您无法在 class 之外直接访问它。您需要一个 class 对象。
node3.print_values(node3)
# 12 --> 99 --> 37 --> nil
print_values
是实例方法所以你需要调用一个实例
例如node1.print_values(node1)
但逻辑上应该是 class 方法,即
def self.print_values(list_node)
#printing logic comes here
end
然后,像 LinkedListNode.print_values(node_from_which_you want_to_print_linked_list)