标量在perl中是什么意思



在perl中,有三种主要的数据类型,"标量、标量阵列和标量关联阵列";。perl试图用名称";标量";?隐喻是什么,应该形成的心理形象?

我可以推断出一个类比:单个值,一个值列表,一个命名值列表。但这并不能帮助我理解为什么";标量";使用。Perl的标量肯定不像梯形图。

这个概念原则上在Variable(计算机科学(中描述,其中说:

在计算机编程中,变量或标量是存储位置(由存储器地址标识(与相关符号配对名称,其中包含一些已知或未知数量的信息称为值。变量名称是除了引用变量之外,还引用存储的值这取决于上下文。

在Perl中,标量变量包含一个值。虽然Perl标量通常与符号名称相关联,但它不必是;可以有一个标量,它只由标量引用引用,而不与符号配对。";标量";在计算机程序设计中,可能源于数学中的类似用法,如Scalar(数学(:中所述

标量是用于定义向量的字段的元素空间一种由多个标量描述的量,例如同时具有两个标量方向和大小称为矢量。

应用于Perl时,标量在perldoc-perldata:中进行了描述

标量可以包含三个不同值中的任何一个风味:数字、字符串或引用。一般来说,转换从一种形式到另一种形式是透明的。尽管标量可能不是直接保存多个值,它可能包含对数组的引用或者散列,该散列又包含多个值。

Perl标量在内部存储一些东西;IV(整数值(、NV(浮点数值(、PV(指向字符串值的指针(、SV(引用(、引用计数、一些跟踪标量是否具有Unicode语义的各种标志、其他";魔术";,以及在使用各种存储类型中的哪些。并非所有这些桶都在任何给定时间使用,填充哪些桶取决于标量的定义方式和使用方式(如果将标量视为数字,则持有字符串的标量稍后可能会在内部填充IV或NV字段(。这在perlguts中有描述,但你通常不需要担心

您可以非正式地将标量视为单个存储单元,其中可能包含数字、字符串或引用。您可以将标量视为独立变量、标量引用引用的存储单元,或者数组或哈希的单个元素。

标量是单个不同的值,如47或";Bob Smith";。标量变量使用$信号。

my $score = 47;
my $name = "Bob Smith";

数组是0个或多个标量的有序列表,可通过非负整数进行索引。数组变量使用@信号。

my @scores = ( 47, 52, 34 );
my @names = ( "Bob Smith", "Susan Richardson", "Heather Jones" );
my $first_score = $scores[0];  # 47
my $last_score = $scores[-1];  # 34, indexed from the end

散列或关联数组是映射到标量的无序字符串列表。哈希变量使用%sigil。

my %scores = (
"Bob Smith" => 47,
"Susan Richardson" => 52,
"Heather Jones" => 34,
);
my $score_for_susan = $scores{"Susan Richardson"};   # Has the value 52
my $score_for_doug = $scores{"Doug Thompson"};   # Has the value undef 
# because the key "Doug Thompson" does not exist in %scores.

当查找值时,像%scores这样的散列被表示为$scores可能会令人困惑。

字符串怎么样"数据";或数字";数据";,一个表示";数据";。

最新更新