Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.226.96.61] |
|
Сообщ.
#1
,
|
|
|
Подскажите, плиз...
[*] Как всобачить в Perl'е continue в цикл do while ? Я могу сделать так: $x = 5;<br>while ($x--)<br>{<br> print $x<br>} continue { print '.' }; а vot так - нет: $x = 5;<br>do<br>{<br> print $x<br>} while ($x--) continue { print '.' }; [*] Что-то я не совсем понимаю, как работает блок: @list = sort({$a <=> $b} (2,1,10)); # @list 1,2,10<br>@list = sort({$b <=> $a} (2,1,10)); # @list 10,2,1 Почему в первом случае список сортируется по возрастанию, а во втором - по убыванию? И что здесь $a и $b (ведь они нигде не объявлены!)? [*] Почему код... $ages{'Fred'} = 35;<br>$ages{'Bob'} = 25;<br>$ages{'Mary'} = 30;<br>$ages{'Zack'} = 15;<br>@list = keys(\%ages);<br>print "@list\n"; Почему именно в таком порядке? |
Сообщ.
#2
,
|
|
|
Цитата Jin X, 03.03.03, 18:09:28 Я могу сделать так: $x = 5;<br>while ($x--)<br>{<br> print $x<br>} continue { print '.' }; а vot так - нет: $x = 5;<br>do<br>{<br> print $x<br>} while ($x--) continue { print '.' }; Патаму чта у DO нету оператора континью. Цитата как работает блок: @list = sort({$a <=> $b} (2,1,10)); # @list 1,2,10<br>@list = sort({$b <=> $a} (2,1,10)); # @list 10,2,1 Почему в первом случае список сортируется по возрастанию, а во втором - по убыванию? И что здесь $a и $b (ведь они нигде не объявлены!)? Сортировка ведется парами значений: первое выбранное значение (левое) обозначается $a, а второе (правое) - $b Таким образом, это означает _правило_ сравнения пар значений: как бы "если первое больше второго". Если переставить правило местами - то "если первое меньше второго". Цитата [*] Почему код... $ages{'Fred'} = 35;<br>$ages{'Bob'} = 25;<br>$ages{'Mary'} = 30;<br>$ages{'Zack'} = 15;<br>@list = keys(\%ages);<br>print "@list\n"; Почему именно в таком порядке? Потому, что сортировка производится по возрастанию по значению возраста, а не по алфавиту. В списке @list лежат _возраста_, а не имена. |
Сообщ.
#3
,
|
|
|
Ясно. Спасибо!
По поводу последнего: почему же тогда, если сделать $ages{'Fred'} = 20; , то ничего не меняется, а если Fred заменить на Freddy, то последние два меняются местами? |
Сообщ.
#4
,
|
|
|
Пардон... Был неправ...
в последнем примере вообще нет никакой сортировки! Поэтому список выдается в том виде, в каком перл разместил их _сам_ в памяти. И в @list хранятся именно ИМЕНА! Если Фреда поменять на Фредди, то Перл у себя в памяти размещает их как-то по-другому, потому что длина одного из ключей изменилась. |