曲径通幽论坛

标题: 列表与数组的异同,列表直接量 [打印本页]

作者: beyes    时间: 2011-9-21 12:08
标题: 列表与数组的异同,列表直接量
列表 (list) 是标量的有序集合,而数组(array)则是存储列表的变量。

列表指的是数据,数组指的是变量。列表的值不一定要放在数组里,但每个数组变量都一定包含一个列表,即使该列表可能为空。

数组或列表中的每个元素都是单独的标量变量,拥有独立的标量值,而且这些值是有序的,也就是说,从其实元素到终止元素的先后次序是固定的。数组或列表中的每个元素都有一个整数作为其索引,且索引号从 0 开始,依次递增 1 。

由于每个元素都是独立不相关的标量值,所以列表或数组里可能包含数字,字符串,undef 值或不同类型变量值的混合。但一般来说,保持所有元素具有相同的类型是一种常见的做法。

列表和数组中可以没有任何元素,也可以包含任意多个元素,多到可以将可用内存全部塞满。

列表直接量是圆括号中用逗号隔开的一系列值,这些值构成了列表中的元素。下面的程序演示了多种填写直接量到列表中的情况:
[code=perl]#!/usr/bin/perl

$m = 11;
$n = 17;

@myarr = (1, 2, 3);

@myarr2 = ("groad", 7, 9);

@myarr3 = (1..10);

@myarr4 = (1.9..5.8);   #会自动变为整数

@myarr5 = (1, 2, 3, 4..8, 10);

@myarr6 = (10..3);      #空列表,只能向上增长

@myarr7 = ($m..$n);     #变量也可以

@myarr8 = (0..$#myarr); #注意这里的 $#myarr 的值是2,它是数组的索引

@myarr9 = ($n-$m..$n-8);

foreach (@myarr) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr2) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr3) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr4) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr5) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr6) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr7) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr8) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr9) {
        print "$_ ";
}
print "\n-----------------\n";[/mw_shl_code]
运行输出:
./list.pl
1 2 3
-----------------
groad 7 9
-----------------
1 2 3 4 5 6 7 8 9 10
-----------------
1 2 3 4 5
-----------------
1 2 3 4 5 6 7 8 10
-----------------

-----------------
11 12 13 14 15 16 17
-----------------
0 1 2
-----------------
6 7 8 9
-----------------
程序中,数组名前加一个 '@' 符号表示对整个数组的引用。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2