Forum Webscript.Ru

Программирование => Perl => Тема начата: Phoinix от 17 Ноября 2006, 21:11:38

Название: Кто-нибудь может объяснить?
Отправлено: Phoinix от 17 Ноября 2006, 21:11:38
> perl -e \'print ($i = 1, $i = 2, $i = 3, "\\n")\'
333
>

???
Название: Кто-нибудь может объяснить?
Отправлено: arto от 17 Ноября 2006, 23:30:29
что именно непонятно?
попробуйте perl -le \'print $i = 1, $i = 2, $i = 3,"\\n",$i\'
Название: Кто-нибудь может объяснить?
Отправлено: Phoinix от 20 Ноября 2006, 15:52:41
arto
Ну и что? результат:
333
3

А я, как бы, предполагаю:
123
3
Название: Кто-нибудь может объяснить?
Отправлено: arto от 20 Ноября 2006, 15:58:06
уф.
попробуйте словами описать, что делается, и, возможно, вы поймете что происходит.
Название: Кто-нибудь может объяснить?
Отправлено: Phoinix от 20 Ноября 2006, 16:50:35
arto
Результатом операции приравнивания должен быть значение справа от знака равенства...

my $i;
print $i = 0;
print $i = 1;
print $i = 2;

Выдаст:

012

Но в списочном контенте, почему-то все результаты равенства становятся равным последнему элементу...

Вопрос: почему так?
Название: Кто-нибудь может объяснить?
Отправлено: arto от 20 Ноября 2006, 18:59:35
сначала выполняется список, и $i == 3, потом печатается три раза.
Название: Кто-нибудь может объяснить?
Отправлено: Phoinix от 21 Ноября 2006, 14:27:15
arto
Умно... что он делает и так понятно...
Он должен последовательно обрабатывать список и выдавать соответствующие значения для элемента списка, но он это не делает...
Вопрос: почему?
Название: Кто-нибудь может объяснить?
Отправлено: arto от 21 Ноября 2006, 15:12:24
еще раз, он сначала вычисляет список.
Название: Кто-нибудь может объяснить?
Отправлено: Phoinix от 21 Ноября 2006, 18:39:01
arto
Ну и что? причем здесь вычисление и то, что он возвращает

На самом деле нет... уже разобрались, так и должно быть...