18

You would think that this would be an easy question, but I can't find the answer anywhere. >_<

Will Ruby throw syntax errors if my code is indented incorrectly? For example, would code like this work?

if str.blank?
  str = "Hello World"
no_input = true
  end

Obviously, this is bad style and I should indent correctly regardless. I want to know whether I can rule it out as the cause of a bug during debugging sessions.

4

3 回答 3

21

是的,它会工作。Ruby 只查找换行符。

但是由于代码的可读性也很重要,我想说如果只是为了这个,你应该注意空格。

于 2013-06-11T19:38:17.210 回答
12

缩进(通常)是一种风格选择

在 Ruby 中,缩进本身是无关紧要的,尽管换行符和其他空格的位置可能会导致解析器产生歧义,或者导致解析器将某些事物视为单独的表达式,而您并非有意如此。这里的文档和多行字符串也是缩进很重要的领域。

在所有情况下,真正的问题是“解析器看到了什么?” 在您的示例中,它应该在功能上等同于正确缩进的代码。但是,如果您真的想知道幕后发生了什么,请查看 Ruby 的Ripper 模块以了解您的代码实际上是如何被解析的。

于 2013-06-11T20:01:23.877 回答
4

Ruby 对空格不敏感。您的代码虽然不漂亮,但可以正常工作。

但是:http ://www.ruby-forum.com/topic/56039

irb(main):001:0> a = ( 4 + 5 )
=> 9
irb(main):002:0> a = ( 4
irb(main):003:1>       + 5 )
=> 5
irb(main):004:0> a = ( 4 +
irb(main):005:1*       5 )
=> 9
于 2013-06-11T19:37:48.537 回答