你会认为这是一个简单的问题,但我无法在任何地方找到答案。 > _<
如果我的代码缩进不正确,Ruby会抛出语法错误吗?例如,像这样的代码工作吗?
if str.blank?
str = "Hello World"
no_input = true
end
显然,这是一种糟糕的风格,无论如何我都应该正确缩进。我想知道在调试会话期间是否可以将其排除为导致错误的原因。
答案 0 :(得分:14)
是的,它会起作用。 Ruby只查找换行符。
但是由于代码可读性也非常重要,我会说如果只是为了这个原因你应该照顾空白。
答案 1 :(得分:11)
在Ruby中,缩进本身是不相关的,尽管换行符和其他空格的位置可能会导致解析器出现歧义或导致它将某些内容视为单独的表达式而不是您的意思对他们来说。这里的文档和多行字符串也是缩进重要的区域。
在所有情况下,真正的问题是“解析器看到了什么?”在您的示例中,它应该在功能上等同于正确缩进的代码。但是,如果你真的想要知道幕后发生了什么,请看一下Ruby的Ripper module,看看你的代码是如何被实际解析的。
答案 2 :(得分: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