对于我必须为作业编写的程序。我被告知要使用智能匹配运算符或哈希。我的问题是,无论我在教科书或互联网上读到什么,我就是不明白它们是如何工作的或它们做什么的。我不认为有人可以简单地向我解释他们的功能?
作业的最后一部分是推断一个区域中独特物种的数量 - 我已经计算了该区域中有哪些物种,但我不知道如何计算物种总数。
例如,如果在一个很小的区域里有 4 只鸟:
2 Red Kite
1 Robin
1 Duck
我知道总共有 4 种鸟,但我不知道如何计算出该特定区域有 3 种鸟。
最佳答案
我建议您使用哈希,它是一种可以使用字符串访问的数据结构。
您可以将哈希值与数组进行比较。
数组的每个元素都有一个索引和一个值,因此@data
元素的值对于索引 2
是 $data[2]
。类似地,哈希的每个元素都有一个键和一个值,因此%bird_count
元素的值 key Red Kite
是 $bird_count{'Red Kite'}
。 (请注意使用大括号而不是中括号来访问哈希元素。)
像 @data
这样的数组可以使用整数访问,因此第三个元素是 $data[2]
,像 %bird_counts
这样的哈希值可以使用字符串访问,因此 Red Kites 的计数为 $bird_count{'Red Kite'}
.
如果你有一个程序可以在观察到鸟类时对它们进行计数,它就可以做到
++$bird_count{'Red Kite'};
++$bird_count{'Robin'};
++$bird_count{'Red Kite'};
++$bird_count{'Duck'};
之后哈希将包含三个元素:$bird_count{'Red Kite'}
将是2
另外两个是 1
。尝试一下。
你可以通过计算哈希的键数量来计算不同鸟的数量,所以
my $num_different_birds = keys %bird_count;
希望对您有所帮助。
关于perl - Perl 中的哈希和智能匹配运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206061/