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

perl语言中的非标量返回值

[复制链接]
发表于 2011-11-13 22:34:52 | 显示全部楼层 |阅读模式
标量并非子程序返回的唯一类型。如果你在列表context 中调用某个子程序◆,则其会返回列表值。
◆你可以使用wantarray 函数来判断一个子程序是在标量还是列表context 中使用的,这可以让你轻松的写出恰当的子程序。
假定想得到某个范围内的数字(如范围操作符),从小到大,或者从大到小。范围操作符只能从小到大,但可以很容易的弥
补这种缺陷:
sub list_from_fred_to_barney {
if($fred < $barney) {
#Count upwards from $fred to $barney
$fred ..$banrey
} else {
#Count downwards from $fred to $barney
reverse $barney ..$fred;
}
$fred = 11;
$barney = 6;
@c = &list_from_fred_to_barney; #@c 为(11,10,9,8,7,6)
在本例中,范围操作符给我们6 到11 的列表,reverse 倒转此列表,因此得到从11 到6 的列表。
也可以什么都不返回。如果return 后没有任何参数则在标量context 中将返回undef,而在列表context 中将返回空列表。这
有助于检验子程序是否返回了正确信息,提示调用者当前不能返回更有意义的值。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:39 , Processed in 0.020076 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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