Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道,为什么是a可见的?
a
if true puts 'true' else puts 'false' a = 123 end puts a # no error # or # my_hash = {key: a} # puts my_hash # :key => nil
但这会导致错误,即使会显示“真实”
if true puts 'true' else puts 'false' a = 123 end puts a2 # boooooom
如果没有为对象定义方法,则a在内部引用具有将其声明为变量的效果。ifa=
if
a=
由于 Ruby 不需要使用与引用变量或分配给变量相同的语法来调用方法,因此它需要对相关标记的性质进行评估。如果它可能是一个方法调用,因为已经定义了具有该名称的方法,那么它将被解释为这样。如果在编译源代码时不存在这样的方法,则默认情况下它将是一个变量。