Ruby - 具有不匹配括号的结束模式:/

时间:2016-08-04 05:28:36

标签: ruby eval

我根据除后(/)运算符之间的空格得到不同的错误。让我们考虑以下示例。

$ ruby -e "a /100"
-e:1: unterminated string meets end of file
-e:1: syntax error, unexpected tSTRING_END, expecting tSTRING_CONTENT or tREGEXP_END or tSTRING_DBEG or tSTRING_DVAR


$ ruby -e "a / 100"
-e:1: undefined local variable or method `a' for main:Object (NameError)

第二个示例给出了正确的错误消息,而第一个示例给出了奇怪的错误。我做了一些研究,但无法找出背后的原因。反正有没有解决这个问题以给出正确的错误消息?

2 个答案:

答案 0 :(得分:1)

如果我尝试使用Ruby 2.3.1,我收到此消息:-e:1: unterminated regexp meets end of file这似乎有效,因为" /"通常是正则表达式标记...
在错误消息的第二行,它表示期待tREGEXP_END 所以,我认为,一切都很好。

答案 1 :(得分:1)

我在终端尝试了这个并且得到了相同的正则表达式错误:

$ ruby -e "a /100"
-e:1: unterminated regexp meets end of file

似乎/100被解释为正则表达式。简单的解决方案是遵循正确的ruby语法(即您的第二个示例:$ ruby -e "a / 100")。通常,建议在ruby运算符周围添加空格,如ruby style guide所示。