gpt4 book ai didi

arrays - 列表和数组有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:35:37 27 4
gpt4 key购买 nike

this页面,它显示了如何初始化一个数组,如果你向下滚动一点,在名为“列表”的部分下,它“解释”了什么是列表以及它们与数组的不同之处。

除了它使用了一个与声明数组完全相同的示例,并且没有对其进行任何解释。

有什么区别?

最佳答案

看看 perldoc -q "list and an array" .最大的区别是数组是一个变量,但是 Perl 的所有数据类型(标量、数组和散列)都可以提供一个列表,它只是一组有序的标量。

考虑这个代码

use strict;
use warnings;

my $scalar = 'text';
my @array = (1, 2, 3);
my %hash = (key1 => 'val1', key2 => 'val2');

test();
test($scalar);
test(@array);
test(%hash);

sub test { printf "( %s )\n", join ', ', @_ }

输出这个
(  )
( text )
( 1, 2, 3 )
( key2, val2, key1, val1 )

Perl 子例程将列表作为其参数。在第一种情况下,列表是空的;在第二个中它有一个元素 ( $scalar) ;在第三个列表中的大小与 @array 相同并包含 ( $array[0], $array[1], $array[2], ...) ,最后它是 %hash 中元素数量的两倍,并包含 ( 'key1', $hash{key1}, 'key2', $hash{key2}, ...) .

显然,该列表可以通过多种方式提供,包括混合标量变量、标量常量和子程序调用的结果,例如
test($scalar, $array[1], $hash{key2}, 99, {aa => 1, bb => 2}, \*STDOUT, test2())

我希望很明显,这样的列表与数组有很大不同。

将数组视为列表变量会有所帮助吗?区分标量文字和标量变量很少有问题。例如:
my $str = 'string';
my $num = 99;

很明显 'string'99是文字,而 $str$num是变量。这里的区别是一样的:
my @numbers = (1, 2, 3, 4);
my @strings = qw/ aa bb cc dd /;

哪里 (1, 2, 3, 4)qw/ aa bb cc dd /是列表文字,而 @numbers@strings是变量。

关于arrays - 列表和数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com