数据类型 Bag 是一种 Perl 5 中没有的新的数据类型。
它可以被认为是一个容器,它一方面知道它里面有多少个单独的元素,另一方面可以说有多少种不同类型的商品。您可以用不同的方式描述此类型:Bag 是一个哈希,默认情况下,您添加的键的值为1。我们来看看例子。
把一个 1 放进 bag 里,看看 perl
的输出:
my $b1 = bag(1);
say $b1.perl;
该程序打印以下输出:
(1=>1).Bag
也就是说,我们有一个 1。
如果你把另一个数字也放进 bag 里面:
my $b2 = bag(1, 2);
say $b2.perl;
现在有一个 1 和一个 2:
(1=>1,2=>1).Bag
好的,如果你添加另一个 1 呢?
my $b3 = bag(1, 2, 1);
say $b3.perl;
现在有两个 1:
(1=>2,2=>1).Bag
让我们稍微离题一下:所有显示的例子都可以把括号去掉:
my $b1 = bag 1;
my $b2 = bag 1, 2;
my $b3 = bag 1, 2, 1;
比较典型的是,bag 不止能存储数字,还可以存储字符串,例如:
my $cars = bag <green black blue black white>;
我可以了解变量 $cars
的内容?
首先,有什么颜色:
say $cars.keys; # (white blue black green)
其次,实际上有多少种不同的颜色:
say $cars.elems; # 4
或者有多少个不同的对象:
say $cars.total; # 5
最后,在创建 Bag 类型的对象时,可以使用类似于如何创建哈希的语法(但是,您不能省略括号和引号):
my $cars2 = bag('green' => 1, 'black' => 2, 'blue' => 1, 'white' => 1);
近期评论