您的位置:首页 > 其它

Perl-13---子程序-3

2010-11-02 17:10 162 查看
一、子程序的引用:

Perl中不仅可以对标量变量、数组变量、哈希变量建立引用,而且也可以对子程序建立引用;子程序的引用类似于C/C++中的函数指针;构造方法如下:

$Pointer_to_Sub = sub { #函数体 };

这样就建立了一个对匿名子程序的引用;通过子程序引用调用子程序的语法如下

&$Pointer_to_Sub(参数列表);

1、子程序模板:

有时候可以通过子程序返回不同的子程序引用,可以创建一系列不同的子程序,这样就可以把操作模板化,这类似于C/C++中的回调函数,即 CALLBACK函数;

2、数组与子程序:

由于数组@_是一个一维数组,所以,不管逆传递多少个数组给子程序,Perl解释器都会把你传递的数组都转换成标量值,然后按照你传递的顺序把这些标量值存储到数组@_中;同样,在返回值中,如果返回的是一个数组,那么,不管逆包装多少个子数组到一个列表中,Perl解释器都会把这些子数组转换成标量值,然后存储到一个一维数组中,供子程序返回;因此,如果按照形如 my (@a,@b) = @_;形式的语句来获取参数列表值的时候,全部数组值都被赋值给数组@a,而数组@b则为空数组;这都是因为数组@_是个一维数组;

所以,在传递数组给子程序的时候,要注意以下几点:

◆ 当传递给子程序的参数是多个数组时,一定要使用数组的引用;

◆ 不要试图在子程序中使用形如 (@Array1,@Array2,。。。,@ArrayN) = @_;的语句处理参数,除非想要

把所有参数集中到一个长的数组中;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: