对于Perl这种脚本语言,简易开发和效率当然是首要考虑的因素,但是我们工作中主要以Perl为主,所以或多或少能接触到用面向对象程序设计的一些概念,开发的一些模块会更简明,易懂,易维护。
Perl没有那么严格的定义,常规的package / use / require 确实可以解决简单的问题,CPAN提供了Moose模块,使面向对象的开发过程更加简单。
截止到2014/7/1的Moose开发模块,可能随着CPAN更新可能会访问不到,google一下~
看个简单例子:
-
package Animal;
-
-
use Moose;
-
-
has 'name'=> (
-
is => 'rw',
-
isa => 'Str',
-
);
-
-
sub whatamI {
-
my $self = shift;
-
print "This is a $self->{name}\n";
-
}
这就是一个简单的Animal类,我们可以把它当作是父类,可以写一个子类:
-
package Duck;
-
-
use Moose;
-
-
extends 'Animal';
-
-
has 'flyable' => (
-
is => 'rw',
-
isa => 'Bool',
-
default => 1,
-
);
-
-
sub fly {
-
my $self = shift;
-
if ($self->flyable){
-
print "It can fly\n";
-
}
-
else {
-
print "Wow it can't fly\n";
-
}
-
}
`package` 是打成包的名字,具体不讲了,目录用'::'细分。
`use Moose;` 时也会自动调用 use strict 和 warnings
`has ' ' => ( ); ` 表示定义了一个类中的变量
`sub xx { }` 定义了一个类的函数 # 不要像 objective-c 里那样随便定义函数名称,过长的名字可能会引起一些bug...
-
#main
-
-
use Duck;
-
-
my $duck_object = Duck->new(
-
name => 'duck',
-
flyable => 1,
-
);
-
-
$duck_object->whatamI();
定义了 $duck_object 后,调用函数时会将$duck_object当做第一个参数传进去,也就是上述的 $self。
更加详细的属性和继承方法还是去看看cpan或者 要好一些
阅读(1598) | 评论(0) | 转发(1) |