Arrays 在Perl中声明具有增量值的数组
我知道可以这样声明数组:Arrays 在Perl中声明具有增量值的数组,arrays,perl,shortcut,Arrays,Perl,Shortcut,我知道可以这样声明数组: my @array = ( 5 .. 10 ); 这相当于: my @array = ( 5, 6, 7, 8, 9, 10 ); 但是,当增量值大于1时,是否有类似的速记法 my @array = ( 5, 10, 15, 20, 25 ); my @array = ( 100, 200, 300, 400, 500 ); 及 更一般地说: my $start = 5; my $stop = 25; my $increment = 5; my @array =
my @array = ( 5 .. 10 );
这相当于:
my @array = ( 5, 6, 7, 8, 9, 10 );
但是,当增量值大于1时,是否有类似的速记法
my @array = ( 5, 10, 15, 20, 25 );
my @array = ( 100, 200, 300, 400, 500 );
及
更一般地说:
my $start = 5;
my $stop = 25;
my $increment = 5;
my @array = map $start+$increment*$_, 0..($stop-$start)/$increment;
或:
(开玩笑。)你也可以用达米安·康威的
use List::Maker;
我的@list=;
“my”variable@array在同一范围内屏蔽了先前的声明
:)@DVK,两个单独的示例,就像OP@ikegami-我知道,我是在讽刺。我进行了编辑,以消除任何可能的怀疑,即它们是分开的examples@DVK我知道我在这里是少数,但我仍然认为最好使用和阅读{}
版本,map{100*$}1..5
,因为您不希望在调用函数之前计算代码块,然而,当函数调用的参数列表中只有逗号分隔的第一个参数时,您肯定会这样做。是的,我知道这需要花费你一个区块设置。我不在乎,因为我发现它更易读,更不容易让人困惑,相反,这总是比过早的微优化更重要。我还希望有一天这会在编译器中得到优化。
my @array = map 100*$_, 1..5;
my $start = 5;
my $stop = 25;
my $increment = 5;
my @array = map $start+$increment*$_, 0..($stop-$start)/$increment;
chomp(my @array = `seq $start $increment $stop`);
use List::Maker;
my @list = <0..100 x 5>;