Ho un programma con un ciclo while che ha diversi punti in cui determinate condizioni richiedono un'azione da eseguire e quindi il resto dell'iterazione da saltare.Terminare un'iterazione di un loop da una subroutine
Dato che questo sarà sempre lo stesso codice, ho voluto inserirlo in una subroutine, ma quando provo a usare 'next;' come ultima affermazione nel sottotitolo ricevo un avvertimento (Uscendo dalla subroutine tramite il prossimo a ...), anche se sembra funzionare come previsto.
cioè senza il sub:
while (#condition) {
## do stuff
if (#condition to skip iteration) {
## action
next;
}
## do more stuff, with the above block repeated several times
}
sub con:
while (#condition) {
## do stuff
&skip if (#condition to skip iteration);
## do more stuff, with more calls to &skip
}
sub skip() {
## action
next;
}
Il resto del codice nel blocco/sub è così breve che mettere tutto ma la successiva; l'enunciato in un sottotitolo praticamente sconfigge l'oggetto di usare una subroutine.
La mia domanda è:
- sta usando 'prossimo;' in una subroutine in questo modo ok, o è pericoloso/scarsa pratica?
- C'è un modo migliore per saltare il resto dell'iterazione da una subroutine?
- Se è ok e non c'è un modo migliore, c'è un modo per sopprimere l'avviso?
Perché utilizzare le parentesi tonde su sub skip? Non è necessario utilizzare prototipi o firme qui. Forse meno confuso per rimuoverli. – jmmeier