有數組中的比每個元素上使用TR ///一個更好的方法如下:如何將tr ///應用於Perl數組的每個元素?
foreach (@list) {
tr/abc/xyz/;
}
我有一些東西玩耍,我只是不能把它弄出來我的頭它看起來不太正確/最佳。也許我只是在考慮如何在後綴表單中使用條件。任何人都知道是否有一種方法來使用tr ///或s ///的後綴形式?
有數組中的比每個元素上使用TR ///一個更好的方法如下:如何將tr ///應用於Perl數組的每個元素?
foreach (@list) {
tr/abc/xyz/;
}
我有一些東西玩耍,我只是不能把它弄出來我的頭它看起來不太正確/最佳。也許我只是在考慮如何在後綴表單中使用條件。任何人都知道是否有一種方法來使用tr ///或s ///的後綴形式?
你是否在尋找:
tr/abc/xyz/ foreach (@list);
基本上以同樣的方式爲你的代碼(的@list
每個元素別名爲$ _)。在這種情況下,你只能見到Tim Toady和他的兄弟姐妹Tom。
tr/abc/xyz/ for (@list);
適合我。
誰使用括號for
作爲語句修飾符?
tr/abc/xyz/ for @list;
而且,如果你打高爾夫球,你可以通過使用y
代替tr
保存一個或多個字符。
...並保存2個沒有空白的文件:y/abc/xyz/for @ list; – toolic 2009-12-19 15:52:19
我不是for
作爲語句修飾符的巨大粉絲;不知道爲什麼,因爲它沒有什麼不對,它只是沒有用其他語句修飾符所做的那種自然語言的方式告訴我。正因爲如此,我會使用map
代替:
map(tr/abc/xyz/, @list);
純粹是偏好的事,我張貼在這裏僅作爲例子。其他答案也很好。
如果你想要它作爲表達式,那麼我更喜歡(表達式開始於map
)。
my @trlist = map { tr/abc/xyz/; $_ } @list;
但foreach
品種可能是當你只是想改變在列表中的項目最簡單的方法:
tr/abc/xyz/ foreach @list;
這不符合你的期望,當你遍歷數組時,$ _是元素的引用。換句話說,在這個例子中@list仍然是音譯的,但是拷貝被分配給@trlist。它速度較慢,需要更多內存並且增益爲0。 – 2009-12-20 20:11:42
@EvanCarroll:它的確符合我的期望。就像我說的那樣,它以*表達*的形式表現。 – Axeman 2009-12-22 10:18:26
這確實很有誘惑力的要崩潰了操作下來一行,並刪除所有不必要的大括號,不是嗎?歡迎來到Perlish Perl,你的生活將永遠不會相同:) – Ether 2009-12-19 10:12:49