是否可以使用Ruby在两行中编写单个语句for循环?

byx*_*xor 3 ruby for-loop

通常在使用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到身体以在同一条线上结束它.

    这是真的,而且非常充足,但我想知道是否有更惯用的方法.

  • 这似乎不必要地挑剔.你为什么要这样做?

    你可能会认为我太挑剔了.您也可能认为我想要做的事情是非惯用的(如果这甚至是一个词).我完全理解,但我仍然想知道它是否可行!

    这样做可以让我们编写的代码甚至可以更好地阅读.对于程序员来说,可读性至关重要.

And*_*eko 8

当然,你正在寻找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.

  • @BrandonIbbotson是的,它会的.`for`循环真的永远不需要在ruby中使用. (3认同)
  • @BrandonIbbotson绝对.这是在Ruby中迭代集合的传统方法 (2认同)