加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

3 Perl - 列表 - 列表赋值

发布时间:2020-12-15 20:50:26 所属栏目:大数据 来源:网络整理
导读:列表赋值 和标量值类似,列表值也可以赋给变量: ($fred,$barney,$dino) = (“flintstone”,“rubble”,undef); 左边列表中的每一个变量都得到了一个新值,和利用3 个赋值语句得到的结果是一样的。由于列表在赋值之前已经建立, 因此在Perl 中可以使用如下的

列表赋值
和标量值类似,列表值也可以赋给变量:
($fred,$barney,$dino) = (“flintstone”,“rubble”,undef);


左边列表中的每一个变量都得到了一个新值,和利用3 个赋值语句得到的结果是一样的。由于列表在赋值之前已经建立,
因此在Perl 中可以使用如下的简单方法交换两个变量的值◆:
◆和C 语言不同,在C 语言中没有完成此类操作的简单方法。C 程序员通常需要使用临时变量,可能是使用宏(macro)来定义的。

?

($fred,$barney) = ($barney,$fred) #交换两个变量
($betty[0],$betty[1]) = ($betty[1],$betty[0]);


如果变量个数(等号左边)不同于其值的个数(等号右边),将发生什么事情呢?在列表赋值中,额外的值会被自动忽略。
因为Perl 认为,如果需要把值存起来,那应当指明其存储的地方。同样,如果有多余的变量,额外的变量被赋予undef◆。
◆对于标量变量这是对的。对于数组变量将得到空的列表,在后面将看到。

?

($fred,$barney) = qw <flintstone rubble slate granite>; #两个值被忽略了
($wilma,$dino) = qw[flintstone]; #$dino 为undef

?

现在可以给列表赋值了,可以使用如下的一行代码来创建按一个字符串数组◆:
◆我们假设rocks 在本语句之前是空的。如果之前的$rocks[7]非空。那,这个赋值语句将不会改变其值。
($rocks[0],$rocks[1],$rocks[2],$rocks[3]) = qw/talc mica feldspar quartz/;
当想引用这个数组时,Perl 有一种简单的写法。在数组名前加@(后没有中括号)来引用整个数组。你可以把他读作“all of the
(所有的)”,所以@rocks 可以读作“all of the rocks(所有的石头)”◆。其在赋值运算符左右均有效:

◆Larry 声称选择美元符号($)和@符号的原因是,可以分别读做$calar(scalar) @arry(array) 。你如果不能按这种方式来记忆,也无所谓。
@rocks = qw / bedrock slate lava /; @tiny = (); #空表 @giant = 1..1e5; #包含100,000 个元素的表 @stuff = (@giant,undef,@giant); #包含200,001 个元素的表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读