I require
un secondo file dal file principale e si desidera tornare da un determinato punto nel secondo file senza uscire dall'intero processo. Il ritorno dovrebbe essere condizionale.È possibile arrestare in modo condizionale Ruby dalla valutazione di un file richiesto senza uscire dall'intero processo?
# file1.rb
puts "In file 1"
require 'file2'
puts "Back in file 1"
# file2.rb
puts "In file 2"
# <= A
puts "Still in file 2"
Quando si esegue file1.rb
, l'uscita che voglio vedere è:
In file 1
In file 2
Back in file 1
noti che Still in file 2
mai stampe e Back in file 1
fa di stampa. C'è qualcosa che posso fare al punto A
per rendere ciò possibile?
non posso usare exit
/exit!
/abort
qui perché Back in file 1
sarà mai stampare. Potrei usare raise
/fail
, ma per farlo dovrei rescue
il fallito require
. Spero di trovare un modo che non implichi la modifica di file1.rb
.
UPDATE:
A "top-level ritorno" caratteristica has been added.
Penso che non ci sia modo, ma di recente sono stato sorpreso di apprendere che è possibile interrompere l'iterazione del ciclo in modo pulito sollevando 'StopIteration'. Spero che ci sia un trucco simile che si nasconde da qualche parte per questo. –
Potrebbe essere stato fornito un esempio semplificato per illustrare il tuo punto. Potrebbe essere se puoi dirci cosa vuoi ottenere, quindi, potrebbe essere qualcuno che può aiutare meglio. Come minimo, evita qualsiasi [problema XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –
Non ci sono X o Y qui. Sono abituato a fare in modo che Ruby faccia qualsiasi cosa, e mi sembra strano che non possa farlo. Se è possibile, mi piacerebbe sapere come. –