我第一次有这个代码,但它不起作用:
VIM = Vimrunner::RSpec.configure do |config|
config.reuse_server = true
config.start_vim do
vim = Vimrunner.start
vim
end
end
这configure
只是为Vimrunner服务器进行设置的一种方法。该start_vim
方法仅描述了应该执行的内容 start vim
。然而这并不重要。
实际上正确的是:
Vimrunner::RSpec.configure do |config|
config.reuse_server = true
config.start_vim do
VIM = Vimrunner.start
VIM
end
end
我不太明白这一点。在第一种情况下,我实际上为VIM
常量分配了一个 Proc,正如我通过 发现的那样irb
,而在第二种情况下,VIM
常量被正确分配。
看来,我通过使用这些块分配了 VIM 常量(位于全局命名空间中),这就是我的理解失败的地方:
我怎样才能在一个块中的一个块中分配一个变量,并让该分配被扔回全局命名空间?
那是如何工作的?例如,我尝试了以下代码:
def foo
yield
end
foo do
a = 'Hello World!'
a
end
puts a
这会告诉我一个错误。如何将 ruby 块中的变量放入调用者的范围?