undefined局部变量或方法`'for main:Object

时间:2014-11-05 12:10:54

标签: ruby whitespace

有时候,以下会导致一个奇怪的错误:

> nil || 4
NameError: undefined local variable or method ` 4' for main:Object

> nil || []
NameError: undefined local variable or method ` ' for main:Object

是什么原因?

2 个答案:

答案 0 :(得分:9)

您不小心在Mac上输入 Alt + Space ,这会产生non-breaking space。 Ruby不会将此视为空格,而是将其视为变量名称的一部分。然后它抱怨变量不存在。

Some people like to remap Alt + Space to Space in order to prevent this typo.

我个人喜欢在文本编辑器中突出显示不可见的字符,所以我立即注意到错字。

答案 1 :(得分:1)

首先,我从其他人编写的代码文件中得到了这个错误的一个非常烦人的版本。它一直抱怨一行中有一个未定义的空格,但上面什么也没有。您可以将光标放在线上,它只会落在角色可以继续的第一个位置。此外,更改编辑器首选项后,行上没有突出显示的字符(甚至没有空格)。 mac 上的选项空间也无法搜索到它。

最终通过从 IDE 选项重新格式化代码来解决。它神奇地在 ruby​​ 抱怨的地方引入了额外的新行。刚刚删除了那些,瞧,没有更多错误了。