[英]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 :: Util的reduce的目的是:
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.