Ruby 将块作为参数传递

Ruby 将块作为参数传递,ruby,Ruby,在Ruby中,将块和其他参数传递给方法的正确方法是什么?我有以下代码: def Foo(arg1, &block1) puts arg1 block1.call end 但这不起作用: Foo('hello', { puts 'world' }) 像这样 Foo('hello') { puts 'world' } #hello #world 还要注意的是,方法名称应该全部是小写的(并且是大小写)。像这样 Foo('hello') { puts 'world' } #hell

在Ruby中,将块和其他参数传递给方法的正确方法是什么?我有以下代码:

def Foo(arg1, &block1)
  puts arg1
  block1.call
end
但这不起作用:

Foo('hello', { puts 'world' })
像这样

Foo('hello') { puts 'world' }
#hello
#world
还要注意的是,方法名称应该全部是小写的(并且是大小写)。

像这样

Foo('hello') { puts 'world' }
#hello
#world

另请注意,方法名称应全部为小写(且以snake_大小写)。

与此相关,是否可以执行多个块参数?甚至两个块参数和第三个非块参数?@Aaron我不知道你能不能。您可以使用并将它们传递给您的方法。不确定这是否是惯用的,但类似于:
proc1=Proc.new{puts“proc1”};def bar(程序1);过程一调用;结束;条形图(proc1)#=>proc1
。您可以定义您的方法来接受多个proc或“non-proc”参数的任意顺序。可能会有帮助,或者有助于引导您正确(我希望是正确的)方向。另外请注意,方法名称应全部为小写-false(但由一些样式指南建议)。Ruby中有很多方法,比如
Array()
Float()
Hash()
等等。@aarontomas
Enumerable#find
采用一个可选的过程,当没有找到匹配的元素时调用它,例如
[1,2,3]。find->{-1}{i | i>3}=>1
,与此相关,是否可以执行多个块参数?甚至两个块参数和第三个非块参数?@Aaron我不知道你能不能。您可以使用并将它们传递给您的方法。不确定这是否是惯用的,但类似于:
proc1=Proc.new{puts“proc1”};def bar(程序1);过程一调用;结束;条形图(proc1)#=>proc1
。您可以定义您的方法来接受多个proc或“non-proc”参数的任意顺序。可能会有帮助,或者有助于引导您正确(我希望是正确的)方向。另外请注意,方法名称应全部为小写-false(但由一些样式指南建议)。Ruby中有很多方法,比如
Array()
Float()
Hash()
等等。@aarontomas
Enumerable#find
接受一个可选的过程,当没有找到匹配的元素时调用它,例如
[1,2,3]。find->{-1}{i | i>3}=>-1
块不是参数,因此,它不能放在参数的括号内。块不是参数,所以不能放在参数的括号内。你必须把它放在外面。