Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Alexander Onokhov                    2:5020/400     21 Feb 2004  13:55:47
 To : milon
 Subject : Re: хитрый splice
 -------------------------------------------------------------------------------- 
 
 "milon" <milon@svitonline.com> writes:
 
 > есть хеш
 > %h = (
 >     'field1' => [a1, ..., aM],
 >     ...
 >     'fieldN' => [m1, ..., mM]
 > );
 > 
 > зная индексы лишних элементов,
 > написал так:
 > 
 > for my $i (@wastes) {
 >     for my $field (keys %h) {
 >         splice @{ $h{$field} }, $i, 1;
 >     }
 > }
 > 
 > плохо...
 
 после каждого splice у тебя массив становится другим, в нём меняются
 индексы у элементов. Hапример а4 после удаления второго элемента ста-
 новится а3. Так что, либо корректируй свой @wastes после каждого splice,
 либо делай по другому. Hа мой взгляд проще сделать так:
 
 foreach (keys %h) {
     @{$h{$_}}[@wastes] = () x @wastes;
     @{$h{$_}} = grep{defined} @{$h{$_}};
 }
 -- 
 Alexander
 --- ifmail v.2.15dev5.3
  * Origin: What me? (2:5020/400)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 хитрый splice   milon   21 Feb 2004 05:46:48 
 Re: хитрый splice   Alexander Onokhov   21 Feb 2004 13:55:47 
 Moderatorial [+] (was: хитрый splice)   Comoderator of RU.CGI.PERL   21 Feb 2004 14:41:57 
Архивное /ru.cgi.perl/102296223d8ee.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional