Perl以不同的方式加入?

Sak*_*ket 4 arrays perl join

我正在研究perl模块并寻找表单的输出(字符串): a:value1 OR a:value2 OR a:value3 OR ...

value1, value2, value3...在数组中(比如@values).

我知道我们可以join( ' OR ', @values )用来创建一个形式的连接字符串:value1 OR value2 OR value3 OR ...

但正如您在上面所看到的,我需要a:为每个值添加一个额外的附加值.

什么是一个巧妙的方法呢?

fle*_*esk 5

您通常使用map来执行以下类型的操作:

#!/usr/bin/env perl
use strict;
use warnings;

my @array = qw(value1 value2 value3);
print join(" OR ", map "a:$_", @array),"\n";
Run Code Online (Sandbox Code Playgroud)

输出:

a:value1 OR a:value2 OR a:value3
Run Code Online (Sandbox Code Playgroud)

map 是一个简单的循环结构,当你想要将一些简单的逻辑应用于列表的每个元素而不会使代码过于混乱时,它非常有用.

  • 虽然`map`可以在内部实现为循环,但其目的是提供*mapping*或*function*,它通过根据相同的规则转换列表的所有元素将一个列表映射到另一个列表.将它视为*循环结构*是没有用的. (2认同)
  • 你说"将它视为一个循环结构是没有用的." 在解释之后("转换所有元素").(应该是"每个",而不是"全部".你知道,就像"为每个人",但它是"映射每个".) (2认同)