ich diesen Code zuerst hatte, aber es funktioniert nicht:Variable Zuordnung erfolgt in einem Block in einem Block
VIM = Vimrunner::RSpec.configure do |config|
config.reuse_server = true
config.start_vim do
vim = Vimrunner.start
vim
end
end
Die configure
ist nur eine Methode, die die Einstellungen für einen Vimrunner Server tut. Die start_vim
Methode zeigt nur, was ausgeführt werden soll, um vim
zu starten. Das ist aber nicht wirklich wichtig.
Was war eigentlich richtig war:
Vimrunner::RSpec.configure do |config|
config.reuse_server = true
config.start_vim do
VIM = Vimrunner.start
VIM
end
end
ich das nicht ganz verstehen. Im ersten Fall habe ich der VIM
Konstante einen Proc zugewiesen, wie ich durch irb
herausgefunden habe, während im zweiten Fall die VIM
Konstante korrekt zugewiesen wurde.
So scheint es, ich habe die VIM Konstante zugewiesen (die im globalen Namensraum liegt) durch die Verwendung dieser Blöcke, und das ist, wo mein Verständnis mir versagt:
Wie ich kann ich eine Variable in einem Block zuweisen in einem Block und lassen Sie diese Zuordnung zurückgeschleudert zurück zum globalen Namespace?
How does that work? Zum Beispiel habe ich diesen Code versucht:
def foo
yield
end
foo do
a = 'Hello World!'
a
end
puts a
Welche wird mir einen Fehler zeigen. Wie kann ich Variablen in Ruby Blocks in den Bereich des Aufrufers legen?
Eigentlich nein, das funktioniert nicht. Es muss 'config.start_vim {vim = Vimrunner.start; vim} '. Das ist es, was ich daran so verwirrend finde. – hgiesel
Das scheint seltsam, denn es ist ziemlich das Gleiche. –
@hgiesel, könnten Sie versuchen, den aktualisierten Code (letzte) –