【发布时间】:2012-02-13 01:11:03
【问题描述】:
我看了这个video。如果未定义 a,为什么 a = a 会被评估为 nil?
a = a # => nil
b = c = q = c # => nil
【问题讨论】:
标签: ruby variable-assignment local-variables
我看了这个video。如果未定义 a,为什么 a = a 会被评估为 nil?
a = a # => nil
b = c = q = c # => nil
【问题讨论】:
标签: ruby variable-assignment local-variables
Ruby 解释器在看到分配给它时使用nil 初始化一个局部变量。它在执行赋值表达式之前或什至在赋值不可访问时初始化局部变量(如下例所示)。这意味着您的代码使用nil 初始化a,然后表达式a = nil 将计算为右侧值。
a = 1 if false
a.nil? # => true
第一个赋值表达式没有被执行,但是a被初始化为nil。
您可以在 Ruby assignment documentation 中找到此行为的记录。
【讨论】: