Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Azazar
Зарегистрирован: 15.02.2004 Сообщения: 3
|
Добавлено: Вс Фев 15 2004 17:48 Заголовок сообщения: Толи я чего-то не понимаю, толи perl глючит. Скорее второе. |
|
|
Вот кусок кода:
Код: | #!/usr/bin/perl
use strict;
sub testsub1 ($) {
my $tv = shift();
sub testsub2 () { return $tv; };
return testsub2();
};
for (my $i = 2; $i < 15; $i++) {
print "value: " . testsub1($i) . "; expected: $i\n";
}; |
Вот это результаты его работы:
Код: | value: 2; expected: 2
value: 2; expected: 3
value: 2; expected: 4
value: 2; expected: 5
value: 2; expected: 6
value: 2; expected: 7
value: 2; expected: 8
value: 2; expected: 9
value: 2; expected: 10
value: 2; expected: 11
value: 2; expected: 12
value: 2; expected: 13
value: 2; expected: 14 |
В чём дело - и так ясно, а вот как это красиво лечить - не знаю? |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Пн Фев 16 2004 13:57 Заголовок сообщения: |
|
|
спросил знакомого "перловщика".
он сказал, что плох тут вы, уважаемый.
по его словам, определение глобальной функции внутри функции - неправилно.
а надо определять её локально:
Код: |
sub testsub1 ($) {
my $tv = shift;
my $testsub2 = sub { return $tv;};
return $testsub2->();
}
|
Удачи. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
|