ruby - 将 Ruby block 中的变量分配给更高的范围

标签 ruby

我正在尝试使用可重试的 gem。

我有一个返回值的函数,该值包含在如下所示的可重试 block 中。

Retriable.retriable do
    x = some_function(1, 2)
end

....do something with x...

我想出如何做到这一点的唯一方法是在 block 内使用全局变量,即@x,但我认为这不一定是最好的方法。如果有人能指出更好的方法,我将不胜感激。

谢谢

最佳答案

在一般情况下,您可以通过在循环外声明变量来解决此问题:

x = nil

%w[foo bar baz].each do |word|
  x = word
end

puts x # => "baz"

在此处查看实际效果:https://repl.it/@jrunning/AbsoluteShamelessVerification

关于ruby - 将 Ruby block 中的变量分配给更高的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014914/

相关文章:

ruby - 为什么 "aabbcc"[/ab*/] 只返回 "a"?

ruby - 斐波那契的两个版本,空表达式

ruby-on-rails - 如何自定义 Spree 的 View ?

ruby-on-rails - 什么 gem/library 可以处理通过 ruby​​ oauth 插件和 oauth gem 接收的 Google Calendar API 数据?

ruby - 代码风格 Ruby 风格/ClassAndModuleChildren

css - 我怎样才能使它成为一个水平列表?

javascript - Ruby on Rails -> 动态创建 div

ruby-on-rails - Rails 嵌套模型应该是复数命名空间还是单数?

ruby-on-rails - Rails 3 事件管理员。根据 CanCan 权限隐藏按钮

javascript - 更改表行内的属性