此代码工作:
class Hello
def initialize
@name = "Paul"
end
def say_name(maybe_name)
name = self.name
case maybe_name
in ^name
puts "Hello, Paul!"
else
puts "No match"
end
end
private
attr_reader :name
end
Hello.new.say_name("Paul") # "Hello, Paul!"
但是,如果我删除name = self.name
,我得到的是一个非局部变量名为固定变量.
这是Ruby中的bug,还是故意的?我想它只适用于局部变量?如果我删除这一行,name
在say_hello
方法中为nil,但它是被定义的.