文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Moose 是个好东西

Moose 是个好东西

时间:2009-03-28  来源:cobrawgl

Perl 的 OO 系统的确是很强大,但是跟 python,ruby 等语言相比,提供的特性太少。当然,我们可以自己动手来实现那些我们想要的特性,但是如果事事都得自己动手来做,忒痛苦些了 :(,还好,现在有了 Moose。 Moose 是对 Perl 现有 OO 系统的一个扩展,使用 Moose,perl 的 oop 就简单多了 。。 呃。。相对简单多了 :) ,以下例子来自网络,我借用一下 :)   首先,我们创建一个基类 Animal  

Class_Animal: { package Animal;
    use Moose;
    #属性
    has 'name' => (is => 'rw');
    has 'color' => (is => 'rw');

    #方法
    sub speak {
        my $self = shift;
        say $self->name, ' goes ', $self->sound;
    }

    sub sound {
        confess shift, ' should have defined sound!';
        #注意 confess ,如果 派生类 没有定义 sound,这里会抱怨一下
    }
}

两个派生类

Class_Horse: { package Horse;
    use Moose;

    extends 'Animal'; #不用 use base 。。。 了
    sub sound {'neigh'}
}

Class_Sheep: { package Sheep;
    use Moose;

    extends 'Animal';
    sub sound {'baaah'}
}

看起来的确简单多了,我们也不用自己写 accessor 了,组合到一起来

 

use 5.010;

Class_Animal: { package Animal;
    use Moose;

    #属性
    has 'name' => (is => 'rw');
    has 'color' => (is => 'rw');

    #方法
    sub speak {
        my $self = shift;
        say $self->name, ' goes ', $self->sound;
    }

    sub sound {
        confess shift, ' should have defined sound!';
        #注意 confess ,如果 派生类 没有定义 sound,这里会抱怨一下

    }
}

Class_Horse: { package Horse;
    use Moose;

    extends 'Animal'; #不用 use base 。。。 了

    sub sound {'neigh'}
}

Class_Sheep: { package Sheep;
    use Moose;

    extends 'Animal';

    sub sound {'baaah'}
}

Class_Main: {

    my $horse = Horse->new(name => 'Mr. Ed', color => 'black');
    my $sheep = Sheep->new();

    $horse->speak;
    say $horse->color;

    $sheep->name('Ms. Bar');
    $sheep->color('white');
    
    $sheep->speak;
    say $sheep->color;    

}

 

这只是 Moose 的简单的示范,Moose 有许多有趣的特性,以后慢慢学 :)

如果 Moose 真的能进入 perl 5 里,真是不错的

 

相关阅读 更多 +
排行榜 更多 +
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载
几何飞行安卓版

几何飞行安卓版

飞行射击 下载