繁体   English   中英

在Perl中将哈希中的所有值相乘?

[英]Multiply all values in hash together in Perl?

我想将哈希的所有值相乘在一起,而不必调用特定的元素。 例如,我不想$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'}因为我不知道在哈希做这个元素的数量。

我猜想有一个简单有效的函数可以执行此操作,也许使用each函数或某些函数,但是我找不到要遵循的示例。 有任何想法吗?

从1开始(因为1乘以1就是乘以1),然后循环遍历哈希值并将当前总值乘以哈希值。

#!/usr/bin/env perl

use v5.12;
my %hash = ( a => 1, b => 2, c => 3, d => 4 );
my $value = 1;
$value = $value * $_ foreach values %hash;
say $value;

这就是List :: Utilreduce的目的是:

use List::Util 'reduce';

my %hash = (foo => 3, bar => 7, baz => 2);

say reduce { our $a * our $b } values %hash;

输出:

42

我会像这样遍历keys %hash

my $prod = 1;
$prod *= $hash{$_} for keys %hash;

这不会吗?

my $m = 1;
for (values %my_hash) {
    $m *= $_;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM