在下面的代码中,如果省略starting_node
,self
不会被解释为setter方法;它变成了一个局部变量。
class Stack
attr_accessor :starting_node
def push(node)
...
self.starting_node = node
...
end
end
为什么在其他地方隐式工作时需要显式的self
?
如果这样,变量赋值如何工作:
local_variable.=("some string")
无效,即使不是方法,它是什么?
答案 0 :(得分:1)
因为否则无法在方法内部设置局部变量。例如:
class ExampleClass
attr_reader :last_set
def method_missing(name, *args)
if name.to_s =~ /=$/
@last_set = args.first
else
super
end
end
def some_method
some_variable = 5 # Set a local variable? Or call method_missing?
puts some_variable
end
end