【发布时间】:2013-07-06 13:19:41
【问题描述】:
我喜欢 Ruby 的地方在于它的优雅:如果我们将 inject 或 map 与 take_while 和 select 一起使用,我们可以将块链接在一起以实现很多目标,同时减少编写代码。
坚持单行解决方案的想法,如何在 Ruby 中编写嵌套的 for 循环而不编写整个嵌套的 for 循环?我觉得这一定是可能的,我只是无法为我的生活弄清楚它是什么。我正在寻找这样的东西:
10.times {|a| 10.times {|b| a*b}}
我能想出的唯一优雅的解决方案是嵌套for 循环。谁有更好的解决方案?
array = []
for a in (1..10)
for b in (1..10)
array << a*b
end
end
【问题讨论】:
-
“如何在 ruby 中编写嵌套 for 循环而不编写整个嵌套 for 循环”?您必须以某种方式定义循环。你不能定义一个不完整的循环并让 Ruby 运行它,因为这会是一个语法错误。
-
上述答案中的代码包含解析错误:解析器会将
<<a*b字符串视为HEREDOC 语法,而不是<<,然后是a*b。它们之间需要一个空格来分隔标记并避免解析错误。 -
@SasQ 好点,现在修复了。