【发布时间】:2012-10-06 16:33:40
【问题描述】:
my @c= map {
my $v=$_;
map {$_ * $v } @m
} @a;
这样使用map 是个好习惯吗?为什么不?
如果没有,还有其他方法吗?
【问题讨论】:
-
不要像
for-loop那样使用map,它是列表修饰符。 -
map不仅是一个列表修饰符,还是一个列表生成器。这就是他的例子所显示的。不过,您的评论对于map { print } @list之类的内容是正确的。 -
@Moritz,“列表修饰符”是一个非常适用的术语。
map输出的列表直接基于传递给它的列表。 (不过,我同意其余的观点。map不会在 void 上下文中被调用。) -
我在 void 上下文中看到很多关于
map的 cmets,但我很确定我已经读到该构造中的性能问题已得到修复。 stackoverflow.com/a/4174537/468327(p.s.此评论与可读性无关) -
@ikegami 好的,授予。我在想这样一个事实,即在地图内部
$_是一个允许修改原始列表的别名。含义@l = (1, 2); map { $_ += 1 } @l; # @l is now (2, 3)
标签: perl map weak-typing