ruby - Ruby 方法如何发回不同数量的变量?

标签 ruby

当使用 RestClient 库时,我可以获得像这样的 GETresponse:

resource = RestClient::Resource.new some_url
resource.get do |response|
  # Handle response
end

我还可以添加requestresult 参数:

resource.get do |response, request, result|
  # Handle response, request, and result
end

Ruby 如何返回一个这样的多个值?

最佳答案

诀窍在于,当屈服于 Ruby 中的 block 时,您可以简单地传递任何人会关心使用的所有值。然后,当您创建 block 时,您可以简单地捕获传递到 block 中的第一个、两个...或所有值。就好像所有 block 参数(在您的例子中是 responserequestresult)都是可选的。

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/

相关文章:

ruby-on-rails - activeadmin的两个命名空间

ruby - rake --tasks 完整描述(未删减)

ruby-on-rails - 如何使用 Rspec 测试嵌套资源的 Controller ?

ruby-on-rails - 创建哈希迭代对象数组

ruby-on-rails - 在 rails/ruby 中创建 pdf 发票

ruby - 使用数组作为内部值创建一个 ruby​​ 嵌套哈希

ruby - Puppet list - 'sudo' 命令?

ruby - Redmine 2.3、ruby 2.0.0、nginx 1.4.1 和 passenger 4.0.2 所有 HTTP POST 失败

ruby - 如何使用 Ruby 在目录中找到最近修改的文件夹?

ruby-on-rails - Rails 3.2 `link_to`(在电子邮件中) `method: :put` 仍在生成 GET 请求