php's array_chunk() için herhangi bir Perl eşdeğer var mı?
Ben birkaç küçük olanları içine büyük bir dizi bölmek için çalışıyorum.
Şimdiden teşekkürler.
php's array_chunk() için herhangi bir Perl eşdeğer var mı?
Ben birkaç küçük olanları içine büyük bir dizi bölmek için çalışıyorum.
Şimdiden teşekkürler.
splice() function.
PHP fonksiyonu maç Eğer yaklaşımlar bir dizi kullanabilirsiniz:
use strict;
use warnings;
use List::MoreUtils qw( natatime part );
use Data::Dumper;
my @array = 0..9;
my $size = 3;
{ my $i = 0;
my @part = part { int( $i++ / $size ) } @array;
warn "PART\n";
warn Dumper \@part;
}
{ my $iter = natatime( $size, @array );
my @natatime;
while( my @chunk = $iter->() ) {
push @natatime, \@chunk;
}
warn "NATATIME\n";
warn Dumper \@natatime;
}
{ my @manual;
my $i = 0;
for( 0..$#array ) {
my $row = int( $_ / $size );
$manual[$row] = []
unless exists $manual[$row];
push @{$manual[$row]}, $array[$_];
}
warn "MANUAL:\n";
warn Dumper \@manual;
}
Kolay yollarından biri List::MoreUtils
and either the natatime
or part
a> fonksiyonlarını kullanmaktır.
Natatime ile, bir yineleyici oluşturur, bu yüzden ne istediğinizi olmayabilir:
my $iter = natatime 3, @orig_list;
Ve her çağrı $iter->()
listesinde 3. öğeleri döndürür.
Sonra orada part
.
my $i = 0;
my @groups = part { int( $i++ / 3 ) } @orig_array;
Bu kolaylaştırmak istiyorsanız, kendi işlevi yazabilirsiniz: chunk_array
.
sub chunk_array {
my $size = shift;
my $i = 0;
return part { int( $i++ / $size ) } @_;
}
: Ve sen kadar basit diyebileceğim
my @trios = chunk_array( 3, @orig_array );