长循环与短循环Ruby

wha*_*t11 0 ruby loops

使用下面的代码作为例子,有人可以给我一个循环方法的单行代码的例子,并向我解释差异?我知道循环有一个短版本和长版本,我认为这对社区搜索(以及我自己的理解)有帮助.

def first_square_numbers(number_of_squares)
  squares = []

  idx = 0
   while idx < number_of_squares
   squares.push(idx * idx)
    idx = idx + 1
  end

  return squares
end
Run Code Online (Sandbox Code Playgroud)

Dig*_*oss 5

def f x
  (0...x).map { |n| n * n }
end
Run Code Online (Sandbox Code Playgroud)


pjs*_*pjs 5

这是您可以使用Array构造函数的块功能的地方:

def first_square_numbers(number_of_squares)
  Array.new(number_of_squares) { |i| i * i }
end
Run Code Online (Sandbox Code Playgroud)

这将创建所需大小的数组,然后应用提供的块来评估i指定的每个索引位置,在这种情况下,对索引值进行平方.有关详细信息,请参阅Array文档.