官术网_书友最值得收藏!

Methods of the Array type

An array in Perl 6 is actually an object of the Array class. Working with classes is a subject of Chapter 8, Object-Oriented Programming. So far, we will discuss how we can access different properties of arrays in Perl 6 programs.

To get the length of an array, call the elems method, as follows:

my @a = 1, 3, 5;
say @a.elems; # 3

The three methods—push, pop, and append—modify the array: push adds a new element to the end of the array; pop takes the last element, removes it from the array, and returns it; append adds new elements to the end and, unlike push, can add more than one new element. Let's examine the output of the following program:

my @a = 1, 3, 5;

@a.push(7);
say @a; # [1 3 5 7]

say @a.pop; # 7
say @a; # [1 3 5]

my @b = 9, 11;
@a.append(@b);
say @a; # [1 3 5 9 11]

Alternatively, you may use functions instead of methods. The preceding program can be written differently, as shown here:

my @a = 1, 3, 5;

push @a, 7;
say @a; # [1 3 5 7]

say pop @a; # 7
say @a; # [1 3 5]

my @b = 9, 11;
append @a, @b;
say @a; # [1 3 5 9 11]

The next group, unshift, shift, and prepend, are the three methods complementary to push, pop, and append. The method unshift adds an element to the beginning of an array; shift removes and returns the first element; prepend adds new elements to the beginning. The following block of code demonstrates the effect of using these methods:

my @a = 1, 3, 5;

@a.unshift(7);
say @a; # [7 1 3 5]

say @a.shift; # 7
say @a; # [1 3 5]

my @b = 9, 11;
@a.prepend(@b);
say @a; # [9 11 1 3 5]

The splice method cuts the array into three parts and optionally replaces the middle one with a new list. The first two arguments of the splice method are the index of the first element that will be removed or replaced and the length of that fragment. For example, consider the following piece of code:

my @even = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20;
@even.splice(4, 3);
say @even; # [2 4 6 8 16 18 20]

Here, three elements with indices 4, 5, and 6 will be removed from the original array.

In the next example, the same elements are replaced with the values 100 and 200:

my @even = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20;
@even.splice(4, 3, (100, 200));
say @even; # [2 4 6 8 100 200 16 18 20]

The length of the replacement does not need to be the same as the removed part.

主站蜘蛛池模板: 南通市| 陆丰市| 武隆县| 长乐市| 耒阳市| 绵阳市| 双峰县| 双牌县| 宝兴县| 咸丰县| 义马市| 巴彦淖尔市| 樟树市| 邹城市| 杨浦区| 准格尔旗| 军事| 东乡县| 梅河口市| 永年县| 华宁县| 肥城市| 翁牛特旗| 简阳市| 翁牛特旗| 沾益县| 河北区| 田阳县| 包头市| 铜鼓县| 衡阳县| 三原县| 吉木乃县| 全州县| 永和县| 涟水县| 抚松县| 浠水县| 深圳市| 白朗县| 周至县|