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) = @_;的语句处理参数,除非想要
把所有参数集中到一个长的数组中;
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) = @_;的语句处理参数,除非想要
把所有参数集中到一个长的数组中;
相关文章推荐
- Perl-13---子程序-1
- Perl-13---子程序-2
- PERL语言入门:第四章:子程序(函数):习题1:写一个程序, 求所有参数的和
- Perl语言学习笔记 13 目标操作
- perl学习(4) 子程序
- Perl----子程序练习
- 13、王爽《汇编语言》笔记_子程序二
- Perl 子程序变量外部使用--又称为闭包
- Perl的子程序(二)
- [译]Perl:使用__SUB__获得当前子程序的引用
- perl子程序的运用及子程序中变量私有(my)声明的重要性
- 在VC中调用PERL子程序
- PERL语言的子程序
- Perl 教学 子程序
- perl教程-子程序
- perl push的用法及子程序返回值的反思
- perl学习4--调用子程序
- Perl教学 第八篇 子程序
- Perl--子程序传参
- perl 子程序传递参数