我有以下大部分没问题的代码:
my $results = { data => [
map {
my $f = $_->TO_JSON;
$f->{display_field} = $_->display_field($q);
$f;
} $rs->all
]};
只是我更希望它更像下面这样:
my $results = { data => [
map {
%{$_->TO_JSON},
display_field => $_->display_field($q),
}, $rs->all
]};
但这会导致语法错误。我怎样才能做我想做的事,或者我当前的版本是最好的?
更新:对之前多出来的分号感到抱歉。这里很晚了。不知道我是怎么错过的。谢谢大家!
最佳答案
它只会给出一个语法错误,因为 Perl 认为您需要省略 map { ... }
之后的逗号,因为它将把该映射解析为一个 block ,而不是一个表达式。将 +
放在前面可以解决这个问题。另外,匿名散列中不能有分号:
my $results = { data => [
map +{
# ^----------------- plus sign added
%{$_->TO_JSON},
display_field => $_->display_field($q);
# ^---- should be comma or nothing
}, $rs->all
]};
关于perl - 如何从 Perl 中的映射返回哈希引用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403607/