我试图在定义它的类中使用attr_accessor
,但无济于事。为什么这不起作用?
我希望以下内容输出" new"在IRB:
irb(main):016:0> foo = StringClass.new
=> #<StringClass:0x2fbf2c0 @thing="old">
irb(main):017:0> foo.output
old
=> nil
irb(main):018:0> foo.change
=> "new"
irb(main):021:0> foo.output
old
=> nil
以下是实施:
class StringClass
def initialize
@thing = "old"
end
attr_accessor :thing
def output
puts thing
end
def change
thing = "new"
end
end
我可以看到定义了thing=
方法。我不明白为什么在我尝试更改值时没有调用该方法。
答案 0 :(得分:1)
试试这个 -
class StringClass
......
def change
self.thing = "new"
end
end
答案 1 :(得分:1)
也就是说,因为应该使用self
调用这些方法:
class StringClass
def initialize
@thing = "old"
end
attr_accessor :thing
def output
puts self.thing
end
def change
self.thing = "new"
end
end