标量在perl中是什么意思?

643ylb08  于 2022-12-04  发布在  Perl
关注(0)|答案(3)|浏览(210)

在perl中,有三个主要的data types,“标量、标量数组和标量关联数组”,perl用“标量”这个名字到底想表达什么?
我可以推断出一个类比:单值、值列表、命名值列表。但这并不能帮助我理解为什么要使用“标量”这个词。Perl的标量肯定不是resemble a ladder

7tofc5zh

7tofc5zh1#

该概念在Variable (Computer Science)中进行了原则性描述,其中表示:
在计算机程序设计中,变量或标量是一个存储位置(由内存地址标识),它包含一些已知或未知的信息量(称为值)。变量名是引用存储值的常用方式,除了引用变量本身之外,还取决于上下文。
在Perl中,标量变量只保存一个值。虽然Perl标量通常与一个符号名相关联,但它并不一定是这样的;你可以有一个标量,它只被一个标量引用引用,而不与一个符号配对。计算机编程中“标量”一词的用法可能来源于数学中类似的用法,如Scalar (Mathematics)中所述:
标量是定义向量空间的场的元素。由多个标量描述的量,如同时具有方向和大小,称为向量。
应用于Perl时,标量在perldoc perldata中描述:
标量可以包含三种不同风格中的任何一种的单个值:数字、字符串或引用。通常,从一种形式到另一种形式的转换是透明的。虽然标量不能直接保存多个值,但它可以包含对数组或哈希的引用,而数组或哈希又包含多个值。
Perl标量在内部存储一些东西;静脉注射(整数值),NV(浮点数值),PV(指针指向字符串值),SV(引用)、引用计数、一些用于跟踪标量是否具有Unicode语义的各种标志、其他“魔术”以及各种存储类型中的哪些正在使用。并非所有这些桶在任何给定时间都在使用,并且填充哪些桶取决于如何定义标量,以及如何使用它(如果将一个包含字符串的标量作为一个数字来处理,那么它稍后可能会在内部填充IV或NV字段)。这在perlguts中进行了描述,但通常不需要担心它。
你可以非正式地把标量看作是一个存储单元,它可以包含一个数字、一个字符串或一个引用。你可以把标量看作是一个独立的变量、一个由标量引用引用的存储单元,或者一个数组或散列的单个元素。

6uxekuva

6uxekuva2#

标量是一个独立的值,如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

散列或关联数组是Map到标量的无序字符串列表。散列变量使用%符号。

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可能会令人困惑。

3qpi33ja

3qpi33ja3#

那么字符串“data”或者数字“data”,一个代表“data”的变量呢?

相关问题