有数组中的比每个元素上使用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