dgB*_*gBP 0 perl hash multiplication key-value
我想将哈希的所有值相乘而不必调用特定元素.例如:I DO NOT想要做的$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'},因为我不知道在哈希表元素做这个数.
我猜这里有一个简单而有效的功能,可能是使用each或者其他东西,但我找不到任何可以遵循的例子.有任何想法吗?
从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;
Run Code Online (Sandbox Code Playgroud)
这就是List :: Util的减少目的:
use List::Util 'reduce';
my %hash = (foo => 3, bar => 7, baz => 2);
say reduce { our $a * our $b } values %hash;
Run Code Online (Sandbox Code Playgroud)
输出:
42