在 Ruby 中必须缩进吗?
Is indentation obligatory in Ruby?
我在 Ruby 的 Rails' 代码中遇到了一些错误,但我不知道那是不是因为它没有缩进。 Ruby 代码是否可以在没有缩进的情况下工作?
缩进不像 python 中那样严格。如果缩进关闭,您的代码应该可以正常工作,但其他开发人员可能无法维护或阅读。
对于严格 Ruby 的项目,您的缩进无关紧要。 Here's a SO answer to the same question that has a good example of functioning Ruby code with poor indentation. If you're curious about proper indentation style in general, Github's Ruby style guide 会给你一个很好的参考。
既然你特别提到了 Rails,我想你可能 运行 会在你的模板代码中出错。如果您使用像 slim 或 jade 这样的模板(您的视图将有 .slim
或 .jade
或 .haml
),缩进可能很重要,缺少缩进会导致错误。例如,
h1 Example code
- @foos.each do |foo|
p = foo
是有效的苗条代码,但是
h1 Example code
- @foos.each do |foo|
p = foo
会产生语法错误。
正如@sawa 所说,缩进不是强制性的但是这是一个很好的做法,因为它可以让您的代码更容易阅读(对于人类),这意味着它更容易捕捉任何错误。根据 Eloquent Ruby 这本书,一个明智的做法是每行使用 两个 spaces 进行缩进,因为这显然是一个缩进,但不会占用太多的空间。该书还建议不要使用 tabs,因为 tab 没有通用长度,因此它们的长度可能会有很大差异。要查看所有这些操作...
没有缩进的代码:
class Human
def laugh
puts "laugh"
end
def cry
puts "cry"
end
代码不是很正确,但是错误在哪里不是很明显。
具有缩进和合理间距的代码:
class Human
def laugh
puts "laugh"
end
def cry
puts "cry"
end
这里更容易看到应该与 class 开口对齐的 end
丢失了。简而言之,是的,缩进您的代码并使用合理的间距(例如方法之间的 space )。它将帮助您和任何使用或阅读您的代码的人。
我在 Ruby 的 Rails' 代码中遇到了一些错误,但我不知道那是不是因为它没有缩进。 Ruby 代码是否可以在没有缩进的情况下工作?
缩进不像 python 中那样严格。如果缩进关闭,您的代码应该可以正常工作,但其他开发人员可能无法维护或阅读。
对于严格 Ruby 的项目,您的缩进无关紧要。 Here's a SO answer to the same question that has a good example of functioning Ruby code with poor indentation. If you're curious about proper indentation style in general, Github's Ruby style guide 会给你一个很好的参考。
既然你特别提到了 Rails,我想你可能 运行 会在你的模板代码中出错。如果您使用像 slim 或 jade 这样的模板(您的视图将有 .slim
或 .jade
或 .haml
),缩进可能很重要,缺少缩进会导致错误。例如,
h1 Example code
- @foos.each do |foo|
p = foo
是有效的苗条代码,但是
h1 Example code
- @foos.each do |foo|
p = foo
会产生语法错误。
正如@sawa 所说,缩进不是强制性的但是这是一个很好的做法,因为它可以让您的代码更容易阅读(对于人类),这意味着它更容易捕捉任何错误。根据 Eloquent Ruby 这本书,一个明智的做法是每行使用 两个 spaces 进行缩进,因为这显然是一个缩进,但不会占用太多的空间。该书还建议不要使用 tabs,因为 tab 没有通用长度,因此它们的长度可能会有很大差异。要查看所有这些操作...
没有缩进的代码:
class Human
def laugh
puts "laugh"
end
def cry
puts "cry"
end
代码不是很正确,但是错误在哪里不是很明显。
具有缩进和合理间距的代码:
class Human
def laugh
puts "laugh"
end
def cry
puts "cry"
end
这里更容易看到应该与 class 开口对齐的 end
丢失了。简而言之,是的,缩进您的代码并使用合理的间距(例如方法之间的 space )。它将帮助您和任何使用或阅读您的代码的人。