Ruby:如何将块的结果作为参数传递

Ruby:如何将块的结果作为参数传递,ruby,Ruby,我可以告诉你如何将计算块的结果作为参数传递给函数吗 这说明了我想通过使用helper函数(do\u yield)来做什么: #/usr/bin/env ruby def do_产量 产量 结束 def foo a #“a”必须是数组 放入“A:[#{A.join(“,”})” 结束 foo(do_){ a=[] a那么,您想将执行某些代码的结果传递给其他代码吗?您只需要将“块”转换为表达式(例如,通过使其成为适当的方法) def条 a=[] a您可能希望在此处搜索的术语是lambda——一个可以

我可以告诉你如何将计算块的结果作为参数传递给函数吗

这说明了我想通过使用helper函数(
do\u yield
)来做什么:

#/usr/bin/env ruby
def do_产量
产量
结束
def foo a
#“a”必须是数组
放入“A:[#{A.join(“,”})”
结束
foo(do_){
a=[]

a那么,您想将执行某些代码的结果传递给其他代码吗?您只需要将“块”转换为表达式(例如,通过使其成为适当的方法)

def条
a=[]

a您可能希望在此处搜索的术语是
lambda
——一个可以作为参数传递的匿名函数

因此,要使用Lambda进行描述,可以执行以下操作:

my_lambda = lambda do 
  a = [] 
  a << 1
end

def foo a
   #'a' must be an array 
   puts "A: [#{a.join(", ")}]"
end

foo my_lambda.call
my_lambda=lambda do
a=[]

a为什么否决?这个解决方案很有效,而且在我看来更符合OP的要求,当然,如果Sergio是对的,他们不知道如何定义一个方法,这显然是基础性的。在我看来,这不像是一个不知道如何定义一个方法的人提出的问题,所以第一类函数很可能是正确的对他们有用。
def bar
  a = []
  a << 1
end

foo bar
foo((a = []; a << 1))
foo(begin
  a = []
  a << 1
end)
my_lambda = lambda do 
  a = [] 
  a << 1
end

def foo a
   #'a' must be an array 
   puts "A: [#{a.join(", ")}]"
end

foo my_lambda.call