ruby变量名称与方法名称

时间:2016-09-08 09:34:22

标签: ruby

ruby​​代码

def something
  p 'hellp something'
  'hello'
end

p something + 'xx'
p '-----------'
something = something + 'xx'

最后一次代码运行错误:

  

test01.rb:11:在<main>': undefined method +'中为nil:NilClass(NoMethodError)

这是我对最后一段代码的理解:

  1. ruby​​从左到右解释代码。
  2. Ruby解析器首先看到'something',然后它会在右边看到'='。所以,它认为'某事'是一个变量,它的价值是零。
  3. Ruby解析器会看到第二个'某事',但不知道这是变量还是方法。因此,它查找相同的名称变量或方法。然后它找到零值'某事'。 “nil +'xx'”此代码运行错误。
  4. 我不知道我的理解是否正确。

1 个答案:

答案 0 :(得分:0)

在红宝石中,一切都是一个阶级。

正在弄乱你的代码的行是something = something + 'xx',此时编译器将按以下顺序混合所有内容。

  1. 第一个something被赋予nil值(来自NilClass)
  2. 等号右侧的第二个something不再与之前定义的方法something相关联,而是与步骤#1中定义的nil对象相关联。
  3. 然后,这是在触发错误时,您尝试对ruby中不允许的nil对象执行操作。