4

Perlでは、配列にゼロを埋め込むにはどうすればよいですか? 配列の長さを取得してから、プッシュで for ループを実行できることはわかっていますが、もっとおいしい方法はありますか?

例えば:

my @array = pad_with_zeroes("foo", "bar", "baz", 6);

# @array now eq ("foo", "bar", "baz", 0, 0, 0)

これを行うことができる(たとえば)List::Utilまたは同様の共通モジュールには何かありますか?

4

1 に答える 1

9
my @array = ("foo", "bar", "baz");
my $total_length = 6;

push @array, (0) x ($total_length - @array);

perldocから:

二項「x」は繰り返し演算子です。スカラー コンテキストの場合、または左のオペランドが括弧で囲まれていない場合は、右のオペランドで指定された回数だけ繰り返された左のオペランドで構成される文字列を返します。リスト コンテキストでは、左側のオペランドが括弧で囲まれている場合、または qw/STRING/ によって形成されたリストである場合、リストを繰り返します。右側のオペランドがゼロまたは負の場合、コンテキストに応じて、空の文字列または空のリストが返されます。

指定された用途のサブとして:

sub pad_with_zeroes { my $n = pop; return ( @_, (0) x ($n-@_) ) }
于 2013-11-20T06:58:25.090 に答える