【问题标题】:Why is `a = a` `nil` in Ruby?为什么 Ruby 中的 `a = a` `nil`?
【发布时间】:2012-02-13 01:11:03
【问题描述】:

我看了这个video。如果未定义 a,为什么 a = a 会被评估为 nil

a = a # => nil
b = c = q = c # => nil

【问题讨论】:

    标签: ruby variable-assignment local-variables


    【解决方案1】:

    Ruby 解释器在看到分配给它时使用nil 初始化一个局部变量。它在执行赋值表达式之前或什至在赋值不可访问时初始化局部变量(如下例所示)。这意味着您的代码使用nil 初始化a,然后表达式a = nil 将计算为右侧值。

    a = 1 if false
    a.nil? # => true
    

    第一个赋值表达式没有被执行,但是a被初始化为nil

    您可以在 Ruby assignment documentation 中找到此行为的记录。

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 2020-08-15
      • 2011-06-18
      • 2012-03-31
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2019-12-18
      相关资源
      最近更新 更多