我无法理解如何使用 map
函数分配哈希值。
为什么
my %a = map {$_=>1 if $_>=2} (1..4);
在
时给我一个Odd number of elements in hash assignment
错误
my %a = map {$_=>1 if $_>2} (1..4);
给我
$VAR1 = {
'' => '',
'4' => 1,
'3' => 1
};
为什么散列中只有一个空字符串?如果我分配给一个数组
我的@a = map {$_ if $_>2} (1..4);
$VAR1 = [
'',
'',
3,
4
];
我得到两个空字符串,这对我来说更有意义。
如果不满足条件,是否有可能不返回空字符串?
最佳答案
尽管 map
不是完成这项工作的最佳方式(如指出的那样,grep
会更好),但仍然可以仅将 map 与 一起使用?
比较:
#!/usr/bin/perl
use strict ;
use warnings ;
use Data::Dumper ;
my %a = map { $_>2 ? ( $_ => 1 ) : () } (1..4) ;
print Dumper( \%a ) ;
当条件不满足时,返回空列表使 map
表现得像 grep
。
>perl test.pl
$VAR1 = {
'4' => 1,
'3' => 1
};
关于Perl: 'map' 的散列分配如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962872/