首页 > 解决方案 > 为什么 Ruby 中的这个布尔语句会出错?

问题描述

这可能很简单,但我不明白为什么这个语句不是有效的 Ruby 代码:

3.>5 || 3.>2 
SyntaxError: unexpected tINTEGER, expecting end-of-input

为什么这个是:

3.>5 || 3.> #this seems nonsensical
=> false

为什么在我的书中,这似乎给出了一个误导性的答案

3.>5 || 3.>(2)
=> false

然而,这个给出了“正确”的答案

3.>(5) || 3.>(2)
=> true

标签: rubysyntaxboolean-expression

解决方案


Ruby 对空间敏感,并且与本网站中使用的语法高亮显示不同,Ruby 在解析运算符时使用“maximum munch”。

3.<与 不同3. <,因为.<解析为“将 < 消息发送到整数 3”。

添加一个空格。更好的是,出于这个原因,永远不要留下一个悬空点,并且代码3.0 < 1.

接下来,3.>5 || 3.>(2)解析为3.>(5 || 3.>(2)),因为 Ruby 神奇地消失了括号。遵循您的风格指南,并在几乎所有二元运算符周围添加空格。少数不应该使用的惯用语是., .&, .., **, 等等...


推荐阅读