Mons Anderson <[email protected]> писал(а) в своём письме Tue, 02 Oct 2012 11:57:21 +0400:

2012/10/2 Maxim Vuets <[email protected]>

On Tue, Oct 02, 2012 at 07:18:21AM +0100, ksvs wrote:
>Недавно начал учить Perl и вот узнал, что в нем есть goto.
>А препод информатики говорит, что за использование goto по рукам надо
>бить, а языки с ним - ушербны.

Относитесь скептически к людям, которые рассуждают такими категориями.


Поддерживаю.

И кстати в перле есть 3  версии goto.

1. классический goto LABEL. используется крайне редко.
2. goto EXPR. жуткая версия goto LABEL, которая позволяет переходить на
динамически вычисленную метку. Никогда вообще не видел, чтоб кто-то
использовал.

Например есть скрипт, в котором живет некий процесс, состоящий из разных долгих стадий, который должны выполняться в опредененной последовательности.
Стадии могут сломаться, и мы можем захотеть возобновить работу с середины

a.pl:
eval { goto $ARGV[0]; }
a:
        sleep 86400;
b:
        sleep 86400;
c:
        sleep 86400;
d:
        sleep 86400;
e:
        sleep 86400;

a.pl c   # - начнем с c

Интересно посмотреть на решения без goto


3! goto CODEREF. Прекрасная, незаменимая, функция, которой и я пользуююсь
регулярно и встречаю таковое использование. За примером далеко ходить не
нужно - Tail Recursion
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить