There’s morethan one way toочистить массив
В проектна перле
Нанялипрограммиста  Delphi/SQL
Ведь еслипрограммист  хороший,
он пишет хорошона любом языке, да?
Да
Но ржачно
sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){      ...
Что за..?** WTF? (Russian)
sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){      ...
sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){      ...
Я отправил примерв рассылку Moscow.pm
И понеслось
1while (my $r = shift @a) {}
2splice @a;
3delete(@a[0..$#a]);
4grep {shift @a} @a;
5@a = ();
5 @a = ();Скукотища!
6undef @a;
ccn@ccn-laptop ~$ perl -le my @a=(1,2,3); while(my $r =shift @a){}; print @accn@ccn-laptop ~$ perl -le my @a=(0,1,2,3); wh...
7while(defined(my $r = shift @a))              {}
ccn@ccn-laptop ~$ perl -le my @a=(undef,1,2,3);while(defined(my $r=shift @a)){};print @a123
Не работает
Извлекаем пользу
$str = "abcc{0}def";@a = split //, $str;$c++ while(shift @a);say $c - 1;   Вычисление длины строки    с завершающим нулем
8while(chomp $str) {};
9while(@a) {shift @a}
10shift @a while @a;    Уже лучше!
11shift @a while @a and die;
12shift @a while scalar @a;
13       $#a = -1Кто помнит, что так можно?!
use Benchmark qw(:all :hireswallclock);my $size = 1000;                                            Becmpthese timethese -3...
TIMTOWTDI or die;        Андрей Шитовtalks.shitov.ru | andy@shitov.ru
Upcoming SlideShare
Loading in...5
×

Как очистить массив

1,674

Published on

Подборка смешных способов очистки массива в перле.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,674
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Как очистить массив

  1. 1. There’s morethan one way toочистить массив
  2. 2. В проектна перле
  3. 3. Нанялипрограммиста Delphi/SQL
  4. 4. Ведь еслипрограммист хороший,
  5. 5. он пишет хорошона любом языке, да?
  6. 6. Да
  7. 7. Но ржачно
  8. 8. sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){       while (my $r = shift @{$self->{$_}->{res}}){}   }}
  9. 9. Что за..?** WTF? (Russian)
  10. 10. sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){       while (my $r = shift @{$self->{$_}->{res}}){}   }}Это подпрограмма для очистки объекта
  11. 11. sub clear{   my $template = shift @args;   @{$self->{tokens}} = ();   foreach (map {$_->{name}} @{$template->{si}}){       while (my $r = shift @{$self->{$_}->{res}}){}   }} Посмотрите на это
  12. 12. Я отправил примерв рассылку Moscow.pm
  13. 13. И понеслось
  14. 14. 1while (my $r = shift @a) {}
  15. 15. 2splice @a;
  16. 16. 3delete(@a[0..$#a]);
  17. 17. 4grep {shift @a} @a;
  18. 18. 5@a = ();
  19. 19. 5 @a = ();Скукотища!
  20. 20. 6undef @a;
  21. 21. ccn@ccn-laptop ~$ perl -le my @a=(1,2,3); while(my $r =shift @a){}; print @accn@ccn-laptop ~$ perl -le my @a=(0,1,2,3); while(my $r= shift @a){}; print @a123
  22. 22. 7while(defined(my $r = shift @a)) {}
  23. 23. ccn@ccn-laptop ~$ perl -le my @a=(undef,1,2,3);while(defined(my $r=shift @a)){};print @a123
  24. 24. Не работает
  25. 25. Извлекаем пользу
  26. 26. $str = "abcc{0}def";@a = split //, $str;$c++ while(shift @a);say $c - 1; Вычисление длины строки с завершающим нулем
  27. 27. 8while(chomp $str) {};
  28. 28. 9while(@a) {shift @a}
  29. 29. 10shift @a while @a; Уже лучше!
  30. 30. 11shift @a while @a and die;
  31. 31. 12shift @a while scalar @a;
  32. 32. 13 $#a = -1Кто помнит, что так можно?!
  33. 33. use Benchmark qw(:all :hireswallclock);my $size = 1000; Becmpthese timethese -3, { nc   @a = ...          => sub { my @a = ((test)x$size); h m       return; }, ar   undef @a          => sub { my @a = ((test)x$size); undef @a; ke       return; }, d   @a=()             => sub { my @a = ((test)x$size); @a = ();       return; },   splice @a         => sub { my @a = ((test)x$size); splice @a;       return; },   $#a = -1          => sub { my @a = ((test)x$size); $#a = -1;       return; },   shift @a while @a => sub { my @a = ((test)x$size); shift @awhile @a;  return; },   delete @a[0..#$a] => sub { my @a = ((test)x$size);delete(@a[0..$#a]); return; },};при $size=1000;shift @a while @a 2642/s                --              -22%      -44%   -44%  -45%     -45%     -45%delete @a[0..#$a] 3376/s               28%                --      -28%   -29%  -29%     -30%     -30%splice @a         4722/s               79%               40%        --    -0%   -1%      -2%      -2%
  34. 34. TIMTOWTDI or die; Андрей Шитовtalks.shitov.ru | andy@shitov.ru
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×