Nik*_*iko 1 ruby block rubymotion
我正在 RubyMotion 中使用某个块,并尝试访问其中在外部声明的实例变量。事实证明我无法从内部访问该变量。我在这里缺少任何明显的解决方案吗?谢谢!
这是代码
@my_var = true
Dispatch::Queue.concurrent.async do
# can't access @my_var here
end
Run Code Online (Sandbox Code Playgroud)
我的猜测是,async
运行块时使用instance_eval
,因此当在块内使用时,您的实例变量会绑定到其他一些对象。如果您只需要读取变量,只需在块内使用本地副本
@my_var = true
my_var = @my_var
Dispatch::Queue.concurrent.async do
my_var
end
Run Code Online (Sandbox Code Playgroud)
或者如果你有一个访问器方法
@my_var = true
this = self
Dispatch::Queue.concurrent.async do
this.my_var
end
Run Code Online (Sandbox Code Playgroud)