Ruby on rails Ruby变量赋值为false,但为nil

Ruby on rails Ruby变量赋值为false,但为nil,ruby-on-rails,ruby,Ruby On Rails,Ruby,赋值语句如下所示: my_var = false def my_var=(x) # ... end 在下一行中,调试器显示'my_var',Type=NilClass,value=nil!这是怎么可能的?我发现这非常有用。代码部分的目标对象可能定义了一个“setter方法”,因此看起来您正在分配给“my_var”,但实际上正在调用“my_var=”方法。查看您的代码是否有如下定义: my_var = false def my_var=(x) # ... end 如果是这样,您需要

赋值语句如下所示:

my_var = false
def my_var=(x)
  # ...
end

在下一行中,调试器显示'my_var',Type=NilClass,value=nil!这是怎么可能的?

我发现这非常有用。

代码部分的目标对象可能定义了一个“setter方法”,因此看起来您正在分配给“my_var”,但实际上正在调用“
my_var=
”方法。查看您的代码是否有如下定义:

my_var = false
def my_var=(x)
  # ...
end

如果是这样,您需要更改本地“my_var”变量或setter方法的名称。您还可以通过进入调用“
my_var=false
”的行进行验证。

您是否在没有任何调试器的情况下直接检查了
my_var
?调试器可能会变得混乱,或者只是显示混乱的结果。

这是一个很棒的问题解释。您是否在没有调试器的情况下检查了
my\u var
?@mu太短了,就是这样,调试器将其标记为nil,但
my\u var.class.to\u s
显示了FalseClass!谢谢,如果你加上这个作为答案,我会接受,否则我会自己回答。我把我的评论变成了你的答案。永远不要信任调试器(或任何其他软件:)。
my_var=false
永远不会调用方法-它始终是局部变量赋值。要调用setter方法,您需要一个接收者(例如,
self.my_var=false