>> map(lamb-6ren">
gpt4 book ai didi

perl - 如何在Perl中的嵌套列表运算符中区分$ _?

转载 作者:行者123 更新时间:2023-12-03 13:31:11 24 4
gpt4 key购买 nike

使用嵌套数组操作实现算法通常很有用。例如,要查找列表中以每个给定字符开头的单词数,您可以在Python中执行以下操作:

>>> a = ["foo","bar","baz"]
>>> map(lambda c: len(filter(lambda w: w.startswith(c), a)), ('a','b','c','d','e','f'))
[0, 2, 0, 0, 0, 1]


在表达式 w.startswith(c)中,区分两个循环迭代变量 wc很简单,因为它们具有不同的名称。

在Perl中,我想做这样的事情:

@a = ("foo", "bar", "baz");
map length(grep $_ =~ /^$_/, @a), ('a','b','c','d','e','f')


但是,明显的问题是 $_仅引用最里面的 grep迭代变量(适合左侧的 $_),而不是外面的 map变量(适合 /^$_/ )。在Perl中避免这种问题的惯用方式是什么?

最佳答案

只需分配给局部变量:

@a = qw(foo bar baz);
map {my $ch = $_; scalar grep $_ =~ /^$ch/, @a} qw(a b c d e f)

关于perl - 如何在Perl中的嵌套列表运算符中区分$ _?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com