我想將散列的所有值相乘而不必調用特定元素。例如。我不要想做$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'}
因爲我不知道散列中元素的數量來做到這一點。在Perl中將哈希中的所有值相乘?
我猜測有一個簡單高效的功能來做到這一點,也許使用each
什麼的,但我找不到任何示例要遵循。有任何想法嗎?
我想將散列的所有值相乘而不必調用特定元素。例如。我不要想做$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'}
因爲我不知道散列中元素的數量來做到這一點。在Perl中將哈希中的所有值相乘?
我猜測有一個簡單高效的功能來做到這一點,也許使用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;
這就是List::Util的減少爲:
use List::Util 'reduce';
my %hash = (foo => 3, bar => 7, baz => 2);
say reduce { our $a * our $b } values %hash;
輸出:
個42
謝謝@darch! :) – memowe
感謝,只是意識到自己:) – dgBP
使用'$值* = $ _' – dgBP