Ruby中的缩进是否必须?

时间:2016-02-10 03:47:49

标签: ruby coding-style indentation

我在Ruby on Rails的代码中遇到了一些错误,但我不知道是不是因为它没有缩进。 Ruby代码是否可以在没有缩进的情况下工作?

3 个答案:

答案 0 :(得分:2)

对于一个严格遵循Ruby的项目,你的缩进并不重要。 Here's a SO answer to the same question that has a good example of functioning Ruby code with poor indentation。如果您对一般的缩进风格感到好奇,Github's Ruby style guide将是一个很好的参考。

由于您特别提到了Rails,我想您可能会遇到模板代码错误。如果您使用的是瘦身或玉石等模板(您的观看次数为clients = Client.includes(:address).limit(10) clients.each do |client| puts client.address.postcode end .slim.jade),则缩进可能很重要,缺少缩进可能会导致错误。例如,

.haml

有效的苗条代码,但

h1 Example code

- @foos.each do |foo|
  p = foo

会生成语法错误。

答案 1 :(得分:2)

正如@sawa所说,缩进不是强制性的而是这是一种很好的做法,因为它允许您的代码更易于阅读(对于人类而言),这意味着它更容易捕获任何错误。根据书籍Eloquent Ruby,一个明智的做法是使用 每行两个空格 进行缩进,因为这显然是一个缩进,但没有占用太多空间这条线。本书还建议不要使用标签,因为标签没有通用长度,因此它们的长度可能会有很大差异。要看到这一切......

没有缩进的代码:

class Human
def laugh
puts "laugh"
end
def cry
puts "cry"
end

代码不太正确,但错误发生的地方并不是很明显。

带缩进和合理间距的代码:

class Human
  def laugh
    puts "laugh"
  end

  def cry
    puts "cry"
  end

这里更容易看到应该与班级开口对齐的end缺失。简而言之,是缩进代码并使用合理的间距(例如方法之间的空格)。它将帮助您和任何使用或阅读您的代码的人。

答案 2 :(得分:1)

缩进不像python中那样严格。如果缩进没有关闭,您的代码应该可以正常工作,但可能无法维护或可供其他开发人员阅读。