为啥 Ruby 中的 `a = a` `nil`?
Posted
技术标签:
【中文标题】为啥 Ruby 中的 `a = a` `nil`?【英文标题】: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
【问题讨论】:
【参考方案1】:Ruby 解释器在看到分配给它时使用nil
初始化一个局部变量。它在执行赋值表达式之前或什至在赋值不可访问时初始化局部变量(如下例所示)。这意味着您的代码使用nil
初始化a
,然后表达式a = nil
将计算为右侧值。
a = 1 if false
a.nil? # => true
第一个赋值表达式没有被执行,但是a
被初始化为nil
。
您可以在 Ruby assignment documentation 中找到此行为的记录。
【讨论】:
以上是关于为啥 Ruby 中的 `a = a` `nil`?的主要内容,如果未能解决你的问题,请参考以下文章
为啥`return a or b`是Ruby中的空值表达式错误?
为啥在ruby中,[].all?i i==1 的结果为true?