如何将方法调用链接到Ruby中的`do ... end`块?

Mat*_*Som 4 ruby ruby-block

我正在做以下事情:

array_variable = collection.map do |param|
  some value with param
end
return array_variable.compact
Run Code Online (Sandbox Code Playgroud)

我可以打电话map,并compact在某种程度上一条语句,这样我就可以立即返回结果?

我正在考虑这样的事情(但可能无效):

array_variable = block_code param.compact 
# block_code here is a method for example which fills the array
Run Code Online (Sandbox Code Playgroud)

Md.*_*mon 12

是的,你可以在这里调用一个方法.

在你的情况下,

array_variable = collection.map do |param|
  # some value with param
end.compact
Run Code Online (Sandbox Code Playgroud)

要么

array_variable = collection.map{ |param| some value with param }.compact
Run Code Online (Sandbox Code Playgroud)

正如@Stefan所指出的,分配不是必需的,你可以直接使用return,如果这是方法的最后一行你也可以省略return..

  • 注意,OP希望返回结果,因此对“ array_variable”的分配是多余的。只需`return collection.map {...} .compact`(如果这是该方法的最后一条语句,您甚至可以省略“ return”) (2认同)