软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
面向对象的Perl 1

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

面向对象的 Perl

开篇

3.1 三条规则

第一,创建一个包

要用 perl 写一个类,首先要创建一个包。 Perl 中的包已经有了一些类的特性:

* 包可以集合有关系的一组代码

* 包有自己的命名空间

第二, perl 中类的方法就是 subroutine

如果有一个变量 $refHero 指向一个 hero 的类, hero 类有 fight, fly 等的方法,通过 -> 就可以访问这些方法。 $refHero->fly; $ refHero->fight ;

用 -> 访问方法符合 perl 的一贯用法:

$refHash->{key}; # 取得哈西的值

$refArray->[$index]; # 取得数组中的元素

$refSub->(@args); # 访问一个子程序

$refObj->method(@args); # 访问类的方法

Tipps: 如果你读 reference 不熟悉的话,是着用 XML::Simple 写个小程序,你一定有很深的了解。

方法可以如下的使用,但两者之间是有区别的:

$refHero->fly(„5km“);

或是

Hero::fly(„5km“);

前者传递给 fly 的参数实际上是 ($refHero, „5km“), 而后者就像是一个普通的 sub 一样,仅仅传递了 („5km“) 。

了解到这点下面的代码就好理解了

package Hero;

sub fly

{

my ($self, @args) = @_;

}

通过 $self 就可以访问自己命名空间里的东东了。因为 perl 里,参数的传递是 call by reference, 所以上面的这种写法还有一个好处就是不会把 sub 里把传递过来的参数改了(这常常是我们不想的)。

第三, 创建一个 ref

bless 完成这一工作。 bless 有两个参数:一个 ref ,一个字符串。




相关文章

相关软件