2015-04-03 50 views
0

代碼在Perl中添加數組的更好方法?

use List::MoreUtils 'pairwise'; # http://stackoverflow.com/a/1865966/54964 
my @offset = (0.28)x scalar(@x); # http://www.perlmonks.org/?node_id=110603 
my @x = pairwise { $a + $b } @x, @offset; 

我希望默認工具找到這更好的方法。

有沒有更好的方法來在Perl中添加數組?

回答

6

這裏沒有必要進行成對數組求和:這是創建您選擇創建與原始數組一樣大的第二個數組(至少是程序內存佔用空間的兩倍)的問題。

您所做的只是爲@x的每個元素添加一個常量。使用for循環:

$_ += 0.28 for @x; 
+0

優秀的答案!我喜歡保持內存佔用不變。 – 2015-04-03 10:15:43

+0

這個命令和你的命令在地圖註釋中有什麼不同?我認爲兩者具有相同的內存佔用量,只是兩個命令的不同實現。實際上,評論中的命令似乎不適用於我的系統。 – 2015-04-03 10:17:20

+0

該命令* @ x =映射$ _ + = 0.28,@x; *與您的答案中的命令相同。沒有* @ x = ... *,沒有存儲。我的Perl 5.18.2是如此新的。 – 2015-04-03 10:51:00

2

首先使它工作,然後使其更好。換句話說,避免過早優化。

my $offset = 0.28; 
for my $x_value (@x){ 
    $x_value += $offset; 
} 

簡單意味着那些必須維護你的代碼的人會喜歡你。 ☻

相關問題