将Ruby块中的变量分配给更高范围

时间:2018-10-26 19:06:05

标签: ruby

我正在尝试使用可回收宝石。

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

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

....do something with x...

我弄清楚如何做到这一点的唯一方法是在块内使用全局变量,即@x,但我认为这不一定是最好的方法。如果有人可以向我指出一种更好的方法,我将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:3)

通常,您可以通过在循环外声明变量来解决此问题:

x = nil

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

puts x # => "baz"

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

答案 1 :(得分:2)

这种确切的情况可以这样解决:

 window.onload = function () {
 var a = localStorage.getItem("imgid");
 document.getElementById("demo").innerHTML = a;
 if(a == 0){
 document.getElementById("demo").innerHTML = "no image selected";
  }
  }

但是,总的来说,不能,不能在外部作用域中声明变量。这就是为什么我们 拥有 作用域。

答案 2 :(得分:0)

无论块返回什么,您都应该能够将值分配给新变量:

JsonProvider