加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – Moose或Meta?

发布时间:2020-12-15 23:37:22 所属栏目:大数据 来源:网络整理
导读:我一直试图通过多种方式做到这一点,但它们似乎都不够优雅. (我也想知道CPAN或Moose是否已经拥有此功能.随着时间的推移,我所做的几十次搜索都没有显示出相同的匹配.) 我想创建一种类 是其他类的基本外观工厂,它们将自己加载为目标类型. “工厂”只是Base- new
我一直试图通过多种方式做到这一点,但它们似乎都不够优雅. (我也想知道CPAN或Moose是否已经拥有此功能.随着时间的推移,我所做的几十次搜索都没有显示出相同的匹配.)

我想创建一种类

>是其他类的基本外观工厂,它们将自己加载为目标类型.
>“工厂”只是Base-> new(%params),它根据各个子类注册的策略创建类型.
>每个子类都知道有关Base类的域的基本知识,但我正在努力保持它的最小化.请参阅下面的示例:UnresolvedPath只知道我们应该首先检查是否存在.

显而易见的例子是文件系统目录和文件:

package Path;
use Moose;

...

sub BUILD { 
    my ( $self,$params ) = @_;
    my $path = $params->{path};

    my $class_name;
    foreach my $test_sub ( @tests ) { 
        $class_name = $test_sub->( $path );
        last if $class_name;
    }
    croak "No valid class for $path!" unless defined $class_name;
    $class_name->BUILD( $self,$params );
}

package Folder; 
use Moose;

extends 'Path';

use Path register => selector => sub { -d $_[0] };

sub BUILD { ... }

package UnresolvedPath; 

extends 'Path';

use Path register position => 1,selector => sub { !-e $_[0] };

>问题:穆斯是否为此提供了优雅的解决方案?或者我是否必须批量进入Class :: MOP?

解决方法

看看 http://code2.0beta.co.uk/moose/svn/MooseX-AbstractFactory/,随意偷. (矿.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读