找回密码
 注册
查看: 2529|回复: 0

perl语言在标量Context 中使用List-Producing 表达式

[复制链接]
发表于 2011-11-13 10:25:02 | 显示全部楼层 |阅读模式
有许多表达式通常都是产生列表的。当其在标量context 中使用时,会得到什么结果呢?让我们看看这个操作的创始人怎么
解释的。通常,这个人是Larry,其文档展现了整个历史。对于Perl 的学习,大部分是学习Larry 是怎么的想的◆。因此,
一旦你能像Larry 那样思考时,你就能明白Perl 的行为。当学习时,你可能需要查看其文档。
一些表达式根本没有标量context 的值。例如,sort 在标量context 中返回什么?你不需要要排序一个列表来得到其个数,因
此,除非有人按另一种方式实现了sort,否则其在标量context 中返回undef。
另一个例子是reverse。在列表context 中,它返回反转的列表。在标量context 中,返回反转的字符串(或者将反转的结果串
成一个字符串):
@backwards = reverse qw / yabba dabba doo /;
#返回doo, dabba, yabba
$backwards = reverse qw/ yabba dabba doo /;
#返回oodabbadabbay
开始时,你可能对于表达式是在标量或者列表context 中使用不太清楚。但,你将很快习惯它。
下面是一些例子:
$fred = something; # 标量context
@pebbles = something; #列表context
($wilma,$betty) = something; #列表context
($dino) = something; #列表context
不要被只有一个元素的列表所欺骗;最后一个是列表context 而非标量context。括号是必须的,它使第四个区别于第一个。
如果将其赋给列表(和元素个数无关),则为列表context。如果赋给数组,也是列表context。
让我们看看已经出现过的一些别的表达式及其context。下面是一些标量context:
$fred = something;
$fred[3] = something;
123 + something;
something + 654
if(something){… }
$fred[something] = something;
下面是一些列表context:
@fred = something;
($fred, $barney) = something;
($fred) = something;
push @fred, something;
foreach $fred(something)
sort something
reverse something
print something
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 18:57 , Processed in 0.027654 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表