我是Ruby的新手,并尝试做一些测试代码。
以下是我的代码,
class Test
name = "my name"
def name
if self.name.nil?
self.name = "new name"
end
end
end
puts Test.new.name
当我运行ruby Test.rb
时,它会给我堆栈级别太深的错误
Test.rb:4: stack level too deep (SystemStackError)
我知道self.name会一次又一次地调用同一个方法......但是我怎样才能达到这样的要求。
感谢。
答案 0 :(得分:0)
我不太确定你要完成什么,但你编写的代码是无限递归,因为方法name
试图调用自己。如果您想对name
变量进行更改,请尝试以下操作:
class Test
attr_accessor :name
def initialize
@name = "my name"
end
def name
if @name.nil?
@name = "new name"
end
@name
end
end
p Test.new.name