在陣列的每個現有元素之間插入元素的最佳方式是什麼?我至今最好的是如下:將中間元素插入到數組中
my @array = (1 , 'foo', { }, [ ]);
my @new_array;
push @new_array, $_, ', ' for @array;
pop @new_array;
在現實中,@array
包含傳遞給HTML ::用逗號分隔的一部分,目的元素的splice_content
方法HTML :: Element對象和字符串的混合物元素內容。
在陣列的每個現有元素之間插入元素的最佳方式是什麼?我至今最好的是如下:將中間元素插入到數組中
my @array = (1 , 'foo', { }, [ ]);
my @new_array;
push @new_array, $_, ', ' for @array;
pop @new_array;
在現實中,@array
包含傳遞給HTML ::用逗號分隔的一部分,目的元素的splice_content
方法HTML :: Element對象和字符串的混合物元素內容。
如何:
my @array = (1 , 'foo', { }, [ ]);
(undef, my @new_array) = map {; ', ' => $_ } @array;
這需要的鮮爲人知的事實,你可以用undef
在列表賦值的左側,表明你不關心這個元素的優勢。 (在map {;
分號是讓解析器瞭解,這是一個塊,而不是一個hashref。)
非常好的選擇。在分號修復之前,我對由此產生的語法錯誤感到困惑。 – Chris
我想我會用一個map
代替for
循環,但保持你的pop
my @new_array = map { $_, ', ' } @array;
pop @new_array;
在我的腦海裏,我想擺脫那種寂寞的流行音樂,但是這個解決方案肯定能夠保持清晰的意圖。 – Chris
這不是一個壞辦法。我想['List :: MoreUtils :: zip'](https://metacpan.org/pod/List::MoreUtils#zip-ARRAY1-ARRAY2-ARRAY3)會有幫助,但你仍然需要創建數組'(',')x $#array'是替代項目,所以它看起來不像是一個很大的節約。 –
感謝您的壓縮建議,通過'List :: *'模塊檢查解決方案並沒有超越我的想法。 – Chris