当使用 RestClient
库时,我可以获得像这样的 GET
的 response
:
resource = RestClient::Resource.new some_url
resource.get do |response|
# Handle response
end
我还可以添加request
和result
参数:
resource.get do |response, request, result|
# Handle response, request, and result
end
Ruby 如何返回一个或这样的多个值?
最佳答案
诀窍在于,当屈服于 Ruby 中的 block 时,您可以简单地传递任何人会关心使用的所有值。然后,当您创建 block 时,您可以简单地捕获传递到 block 中的第一个、两个...或所有值。就好像所有 block 参数(在您的例子中是 response
、request
和 result
)都是可选的。
def eat(meal)
meal.each { |food| yield(food, 99, 100) }
'delicious!'
end
eat([1, 2, 3]) { puts "Yum!" }
# Output:
Yum!
Yum!
Yum!
=> "delicious!"
eat([1, 2, 3]) { |a| puts "Yum! #{a}" }
# Output:
Yum! 1
Yum! 2
Yum! 3
=> "delicious!"
eat([1, 2, 3]) { |a, b, c| puts "Yum! #{a}, #{b}, #{c}" }
# Output:
Yum! 1, 99, 100
Yum! 2, 99, 100
Yum! 3, 99, 100
=> "delicious!"
请注意 eat
方法没有改变,只是您提供给该方法的 block 。我们只是简单地修改了它以接受更多的参数(并用它们做一些事情)。
关于ruby - Ruby 方法如何发回不同数量的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771207/