Perl 函式 - map

 

■ 語  法

map EXPR, LIST

map BLOCK, LIST

 

■ 功  能

map 會對LIST中的每個元素評估BLOCK或EXPR(為Local每個元素),並將每個此類評估的結果組成一個清單。在LIST中的每個元素都可能在生成的列表中產生0、1或更多的元素。所以生成的列表中的元素數量,有可能和LIST中的不同。

在標量上下文中,返回的元素產生總數量。

在列表上下文中,返回的值列表。

my @chars = map(chr, @numbers);

將一串數字轉換成相應的字串

 

my @squares = map { $_ * $_ } @numbers;

將一串數字轉換成它們的平方值

 

my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;

顯示傳回元素的數量可能與輸入元素的數量不同。傳回一個空列表時傳要省略一個元素,也可以寫成

my @squares = map { $_ * $_ } grep { $_ > 5 } @numbers;

這使得意圖更加明顯。

 

map總是回傳一個列表,它可以使分配到一個 hash,這樣元素就成為 鍵/值 對。

my %hash = map { get_a_key_for($_) => $_ } @array;

下面是一個比較有趣的寫法

my %hash;
foreach (@array) {
    $hash{get_a_key_for($_)} = $_;
}

 

必須注意的是,$_ 是列表值的別名,所以它可以用來修改LIST的元素。雖然這個很有用,而且是被支援的,但如果LIST元素不是變量,它可能會導致奇怪的結果。在大多數的情況下,使用常規的foreach 迴圈來達到這個目的會更清楚。所以也可看看  grep ,它是由原始列表中的那些 BLOCK或expr評估為true的項目組成的列表。

 


#關鍵字 Perl 函式 - map用法;Perl 函式 - map語法;Perl 函式 - map範例;

 

 

■ Perl  其它函數

▶ Perl 函式|函數|指令集

 


arrow
arrow
    全站熱搜

    News123 發表在 痞客邦 留言(0) 人氣()