Dan*_*mer 0 perl refactoring perl-hash perl-data-structures
我有一个哈希列表,一些哈希包含一个提供数组本身的键.
my @cars = (
{ # empty car
name => "BMW",
},
{ # car with passengers
name => "Mercedes",
passengers => [qw(Paul Willy)],
},
...
)
Run Code Online (Sandbox Code Playgroud)
它几乎就像上面但当然不是以愚蠢的汽车为例:-)
现在我需要从所有哈希中获得所有"乘客"的列表,包括那些甚至不提供乘客阵列的乘客.
在第二步中,我需要从列表中检索唯一条目(实际上乘客是Perl对象引用,我需要列表中的每个对象一次)
目前我这样做:
my (@all, @passengers, %seen);
for(@cars) {
push @all, @{$_->{passengers}} if $_->{passengers};
}
@passengers = grep { ! $seen{$_} ++ } @all;
Run Code Online (Sandbox Code Playgroud)
我想摆脱@all并将所有乘客的名单直接扔进去grep.
有什么建议?
my %seen;
my @passengers = grep { ! $seen{$_} ++ }
map { @{$_->{passengers} || []} } @cars;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |