我在RubyMotion中使用某个块并尝试访问其中声明为外部的实例变量。事实证明我无法从内部访问变量。我有什么明显的解决方案吗?谢谢!
这是代码
@my_var = true
Dispatch::Queue.concurrent.async do
# can't access @my_var here
end
答案 0 :(得分:4)
我的猜测是async
使用instance_eval
运行块,因此在块内使用时,您的实例变量会绑定到其他对象。如果您只需要读取变量,只需在块中使用本地副本
@my_var = true
my_var = @my_var
Dispatch::Queue.concurrent.async do
my_var
end
或者如果你有一个存取方法
@my_var = true
this = self
Dispatch::Queue.concurrent.async do
this.my_var
end