我已经使用var.nil?
了一段时间,它遍布我的代码。突然间,我在它之后得到undefined local variable or method
了变量.nil?
。
这是怎么回事?坏.nil?
了吗?我什至在网上的 IRB 上尝试过它,以确保它不在我的环境中。我应该能够输入:
me.nil?
如果尚未定义变量,那应该返回为真,这就是重点,但我明白了undefined local variable or method me for main:Object
也许我nil?
错了,不得不使用类似的东西:
defined?(me) == nil
并且.nil?
只能与现有对象一起使用?这不是我理解的方式。ruby 文档甚至这样说:
nil.nil? -> true
<anything_else>.nil? -> false
在这里发疯。
更多信息
我明白我可以做到:
unless defined? me
do something
但相当于if me.nil?
只会:
if defined?(me) == nil?
正确的?没有别的办法了吗?
现在我不仅质疑我的知识,而且质疑我的理智:)
结论:
好的,因此.nil?
适用于不存在的实例变量,它也适用于不存在的哈希或数组键,但不适用于不存在的局部变量。对我来说,这是一个巨大的错误。您必须牢记它几乎适用于所有东西,除了最常用的项目(局部变量)。
我的结论是,这与以下事实有关,即局部变量可能会与 Ruby 中的方法混淆,语法中没有任何内容可以将它们分开(用法不同,是的,但我的意思是在其他语言中,您将 a$
或其他任何内容添加到 a变量,它永远不会与方法混淆)。