Arrays Perl以不同的方式加入?
我正在处理一个perl模块,并寻找以下形式的输出(字符串):Arrays Perl以不同的方式加入?,arrays,perl,join,Arrays,Perl,Join,我正在处理一个perl模块,并寻找以下形式的输出(字符串):a:value1或a:value2或a:value3或… 值value1、value2、value3…在一个数组中(比如@values) 我知道我们可以使用join('OR',@values)创建一个连接字符串,其形式为:value1或value2或value3或… 但正如您在上面看到的,我需要在每个值前面加一个a: 这样做的好方法是什么?您通常用于以下类型的事情: #!/usr/bin/env perl use strict; use
a:value1或a:value2或a:value3或…
值value1、value2、value3…
在一个数组中(比如@values)
我知道我们可以使用join('OR',@values)
创建一个连接字符串,其形式为:value1或value2或value3或…
但正如您在上面看到的,我需要在每个值前面加一个a:
这样做的好方法是什么?您通常用于以下类型的事情:
#!/usr/bin/env perl
use strict;
use warnings;
my @array = qw(value1 value2 value3);
print join(" OR ", map "a:$_", @array),"\n";
输出:
a:value1 OR a:value2 OR a:value3
map
是一种简单的循环结构,当您希望对列表的每个元素应用一些简单的逻辑而不使代码变得太混乱时,它非常有用。而map
可以在内部实现为循环,它的目的是提供一个映射或函数,通过根据相同的规则转换列表的所有元素,将一个列表映射到另一个列表。将其视为循环构造是没有用的。@Borodin:looping构造的意思是更简洁地描述map
的功能,而不是形式定义。如果您可以建议另一个术语,我很乐意更新答案。如果您将状态从一个迭代转移到下一个迭代,则将其视为循环是很有用的,特别是如果最终结果取决于执行顺序。您在解释它之后说“将其视为循环构造是没有用的”(“转换所有元素”)。(虽然应该是“每个”,而不是“所有”。你知道,像“每个”,但这里是“映射每个”。)