Potrei essere stato esposto a lingue esattamente sbagliate, ma sebbene molti abbiano cicli e istruzioni di interruzione, nessuna delle lingue che conosco ha istruzioni di interruzione di ordine superiore¹. Mentre un'istruzione di interruzione regolare termina il ciclo più interno all'interno del quale viene eseguita, tale istruzione break(n)
termina il n
di cicli più interni.
Ad esempio, usando una simile affermazione, potrei scrivere in Python:
for i in range(100):
for j in range(100):
if foo(i,j):
break(2)
Come Python manca di una simile affermazione, tuttavia, devo fare qualcosa di simile al seguente:
broken = False
for i in range(100):
for j in range(100):
if foo(i,j):
broken = True
break
if broken:
break
(Sono consapevole che ci sono altri modi per fare ciò, come ad esempio l'aumento delle eccezioni. esempio.)
In un altro esempio, questo è uno dei motivi principali per utilizzare un'istruzione goto
in C / C ++ . Mentre goto
consente un equivalente vicino di una interruzione di ordine superiore, introduce un nuovo elemento sintattico (a meno che uno già usi goto
s). Per non dimenticare che goto
è disapprovato da molti - sia giustificato o meno.
Mentre vedo che usare una frase break di ordine superiore non è qualcosa che la maggior parte delle persone usa quotidianamente, questo vale anche per molte altre funzionalità linguistiche. Inoltre, un'istruzione di interruzione di ordine superiore non mi sembra difficile da implementare e sarebbe piuttosto intuitiva da usare.
C'è una buona ragione per cui i linguaggi di programmazione dovrebbero avere un'istruzione break ma non un'istruzione break di ordine superiore? Sto pensando a problemi concettuali inerenti, paradigmi rotti o vulnerabilità degli errori.
¹Anche se, alla ricerca di questa domanda, ho imparato che PHP li ha.