Sono a conoscenza della funzione on.exit
in R, che è ottima. Esegue l'espressione quando la funzione di chiamata si chiude, normalmente o come risultato di un errore.Esiste un modo per eseguire un'espressione on.exit() ma solo se completa normalmente, non in caso di errore?
Quello che mi piacerebbe è che l'espressione venga eseguita solo se la funzione di chiamata ritorna normalmente, ma non nel caso di un errore. Ho più punti in cui la funzione potrebbe tornare normalmente e più punti dove potrebbe fallire. C'è un modo per fare questo?
myfunction = function() {
...
on.exit(if (just exited normally without error) <something>)
...
if (...) then return(point 1)
...
if (...) then return(point 2)
...
if (...) then return(point 3)
...
return (point 4)
}
Bel pensiero .. –
+1 Non ci avevo pensato. My 'do something' sta impostando un flag in' .GlobalEnv' (una situazione molto insolita che merita questo approccio, promessa!). Rendendo ogni "allora" due affermazioni sembravano brutte a causa della ripetizione dello stesso codice ogni volta, quindi la rotta "on.exit". Ma avvolgere che "fai qualcosa" in una funzione è pulito! –
euw! più percorsi di uscita, gestori di uscita e ora impostazioni globali! Dijkstra girerà nella sua tomba! – Spacedman