arrays - Perl:你可以在 map 函数中使用两个以上的数组吗?
问题描述
最近我一直在学习 Perl,遇到了一个有趣的问题。我将如何像这样在 map 中使用两个数组?
use warnings;
use strict;
use Data::Dumper;
my $names->{name} = ['Bill', 'Smith'];
my $cars->{model} = ['Honda', 'Toyota'];
my $obj = {
'Students' => [
map {
'Name' => $_,
'Model' => $_
}, @{$names->{name}}, @{$cars->{model}}
]
};
print Dumper $obj;
这将打印出来,它产生的对象比我想要的多。
$VAR1 = {
'Students' => [
{
'Model' => 'Bill',
'Name' => 'Bill'
},
{
'Model' => 'Smith',
'Name' => 'Smith'
},
{
'Model' => 'Honda',
'Name' => 'Honda'
},
{
'Model' => 'Toyota',
'Name' => 'Toyota'
}
]
};
我想做的是以产生这些结果的方式进行地图工作
$VAR1 = {
'Students' => [
{
'Model' => 'Honda',
'Name' => 'Bill'
},
{
'Model' => 'Toyota',
'Name' => 'Smith'
}
]
};
解决方案
use warnings;
use strict;
use Data::Dumper;
my $names->{name} = [ qw(Bill Smith) ];
my $cars->{model} = [ qw(Honda Toyota) ];
my $obj = {
Students => [
map {
{ Name => $names->{name}[$_], Model => $cars->{model}[$_] }
}
0 .. $#{$names->{name}}
]
};
print Dumper $obj;
主体map
使用两个数组,因此您只需要为其提供索引。
为此,两个数组引用必须具有相同的长度,并且项目要在相同的索引处配对。
语法$#$arrayref
是$arrayref
针对{}
.
你有什么取消引用两个arrayrefs,为创建一个单一的平面列表map
,产生
my $obj = {
'Students' => [
map {
'Name' => $_,
'Model' => $_
}, qw(Bill Smith Honda Toyota);
]
};
推荐阅读
- scala - 按列表分组
- spring-boot - Spring boot:从 pom-xml 中删除了 spring 安全性依赖项,但仍在 Intellij 中生成密码
- php - 我的 opencart 网站运行良好,然后当我尝试添加产品时出现此错误
- javascript - 使用 jQuery 延迟加载 html 视频
- postgresql - Postgres:为什么 DISTINCT ON 表达式必须匹配最左边的 ORDER BY 表达式?
- python - Python 硒解决方案
- apache-flink - Flink 文件读取堆内存异常
- cypress - 将跨浏览器与 cypress 一起使用
- java - 排除特定的 OSGI-INF
- go - 如何在 Go 中依赖分叉的第三方依赖项