Uso le funzioni anonime per la stampa diagnostica durante il debug in MATLAB. Per esempio,Come si crea una funzione anonima "vuota" in MATLAB?
debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden
Utilizzando disp([])
come "trangugiare" sembra un po 'sporco per me; c'è un'opzione migliore? (?) Il metodo ovvio non funziona:
debug_disp = @(str) ;
Questo potrebbe, a mio avviso, essere utile per altre applicazioni linguaggio funzionale, non solo la stampa diagnostica.
Mi piace questo approccio migliore. Nonostante lo sforzo extra, penso che è davvero il modo più pulito per farlo. –
Sulla mia macchina, questo approccio è più veloce di tutte tranne due versioni che ho provato. 1 milione di chiamate a handle() quando handle era 'handle = @ NOP' richiesto 7,09 secondi. Mentre 'handle = @() [];' richiesto 23.2 secondi. Immagino che questo sia dovuto al sovraccarico della creazione di oggetti. 'handle = @() drawnow ('update');' richiesto 3.37 secondi. 'handle = @() disp ([]);' e 'handle = @() disp ('');' erano legati a 9.71 secondi. La funzione più veloce era 'handle = @() (1);' con un tempo di 0,775 secondi. Le sue chiamate, tuttavia, devono essere terminate con un punto e virgola. – Eponymous
Oops 'handle = @() drawnow ('update');' ha impiegato 34,0 secondi per un milione di chiamate. Ho accidentalmente omesso lo 0 quando digito 1000000. A proposito, è ancora molto più veloce di 'handle = @() drawnow;' - che impiega 187 secondi. – Eponymous