[英]Unable to access instance variable outside the class in ruby
在我的代码中,尝试在类外打印p @stack
,尽管放置了attr_accessor :stacks, :each_stack_size, :stack_number
但它显示nil
。 像往常一样,它在类中使用时可以正常工作并显示数据。 我想念什么?
class SetOfStacks
attr_accessor :stacks, :each_stack_size, :stack_number
# Initializing Hash to hold all the stacks and initial stack is created.
def initialize
@stacks = Hash.new # declaring hash to hold all stacks
@each_stack_size = 3 # defining each stack size
@stack_number = 1 # Current stack number
@stacks[@stack_number] = Array.new
end
...
...
end
@obj = SetOfStacks.new
@obj.push(4)
@obj.push(5)
@obj.push(6)
@obj.push(7)
@obj.pop
p @stacks
为了打印实例变量,必须使用实例的上下文对其进行访问。
p @obj.stacks
您误会了Module#attr_accessor的功能。 本质上,它为实例变量创建getter和setter方法。 在您的情况下, attr_accessor :stacks
创建SetOfStacks#stacks和SetofStacks#=方法。 请注意,这些仍然是对象的实例方法,而不是全局变量,因此您仍然必须正确调用它们。 例如:
@obj = SetOfStacks.new
@obj.stacks # invoke your getter
@obj.stacks = { foo: nil } # invoke your setter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.