我正在使用以块为参数的方法。我是Ruby和Blocks的新手,所以我不太了解如何创建一个Block并将其传递给该方法。您能否提供一个示例,说明如何创建一个块并将其作为参数传递?
更新:这是我尝试调用的方法的示例:
def exec!(commands, options=nil, &block)
# method code here
# eventually it will execute the block if one was passed
end
这是我当前调用此方法的方式:
@result = ssh.exec!("cd /some/dir; ls")
如何将块作为第三个参数传递给
exec!
方法? 最佳答案
这部分取决于您要如何使用它。如果适合您的使用需求,这是一个简单的方法:
@result = ssh.exec!("cd /some/dir; ls") do |something|
# Whatever you need to do
# The "something" variable only makes sense if exec! yields something
end
或者
@result = ssh.exec!("cd /some/dir; ls") { |something| puts something }
块短时通常使用
{}
表示法。您还可以创建
Proc
或lambda;最终,“正确”的答案取决于您要执行的操作。请注意,如果您谈论的是Net::SSH,则有an example。
关于Ruby:如何创建一个块并将其作为参数传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7730249/