通常在使用Ruby进行编程时,我会发现自己正在编写一个小的for循环,并在正文中使用单个语句.例如...
for number in 1..10
puts number
end
Run Code Online (Sandbox Code Playgroud)
在其他语言中C,Java或者Kotlin(例如),我可以在两行中编写相同的代码.例如...
// Kotlin
for (number in 1..10)
println(number)
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,由于缺少花括号而推断出循环体的结尾.
Ruby有没有办法模仿"for loop"的"单一语句"风格?
以下是[我的选项/您的潜在回复],以及我对它们的看法.
你可以附加
; end到身体以在同一条线上结束它.
这是真的,而且非常充足,但我想知道是否有更惯用的方法.
这似乎不必要地挑剔.你为什么要这样做?
你可能会认为我太挑剔了.您也可能认为我想要做的事情是非惯用的(如果这甚至是一个词).我完全理解,但我仍然想知道它是否可行!
这样做可以让我们编写的代码甚至可以更好地阅读.对于程序员来说,可读性至关重要.
当然,你正在寻找each,在这种特殊情况下Range#each:
(1..10).each { |number| puts number }
Run Code Online (Sandbox Code Playgroud)
对于更复杂的迭代,使用do- end块语法.例如
(1..10).each do |number|
puts number
some_method_call(number)
Rails.logger.info("The #{number} is used")
something_else
end
Run Code Online (Sandbox Code Playgroud)
要查找更多信息,请查看Ruby文档,请参阅Enumerable.