moose相关内容

如何让 Moose 返回一个子类实例而不是它自己的类,以实现多态性

我想创建一个泛型类,它的构建器不会返回这个泛型类的实例,而是一个专用子类的实例. 由于 Moose 进行自动对象构建,我不明白这是否可行,以及如何使用 Moose 语法创建 Moose 类并具有此行为. 例如:用户询问:$file = Repository->new(uri=>'sftp://blabla') .... 并返回一个 `Repository::_Sftp` 实例 用 ..
发布时间:2022-01-24 16:47:02 其他开发

如何调用存储在 Perl 哈希中的函数名称?

我确定这在某处的文档中有所介绍,但我一直无法找到它...我正在寻找语法糖,它可以在名称存储在的类上调用方法哈希(相对于简单的标量): 使用严格;使用警告;包Foo;sub foo { print "in foo()\n" }主包;我的 %hash = (func => 'foo');Foo->$hash{func}; 如果我首先将 $hash{func} 复制到一个标量变量中,那么我可以调用 ..
发布时间:2022-01-13 18:02:17 其他开发

如何将 Moose 对象序列化为 XML?

我有一堆遗留模块想要转换为基于 Moose 的模块.这些模块目前有“toXML"方法,这些方法是使用 XML::LibXML 手工编码的. 是否有将 Moose 对象序列化为 XML 的模块或技术? 我看过 MooseX::Storage,但它处理的是 JSON、YAML 和存储,而不是 XML.谷歌搜索 Moose 和 XML 会产生大量对 XML::Rabbit 的引用,这似乎有助 ..
发布时间:2021-10-01 20:19:44 其他开发

类型约束 'XYZ' 已经创建

我想使用 Moose::Util::TypeConstraints 在我的应用程序中. 所以我在我的 main.pl 中定义了一个 main.pl 使用 Moose::Util::TypeConstraints;子类型“mySpecialType"=>作为“对象"=>where sub { $_->does('something') };不使用; 包noUse.pm中是使用的包,它们 ..
发布时间:2021-09-11 20:13:12 其他开发

如何更新作为 moose 属性的 Perl/Tk 小部件文本变量?

在 Perl/Tk 中,可以为小部件定义文本变量.它是对保存值的一些标量的引用.有人向我展示了如何使用 Moose 属性强制将 Moose 属性用作文本变量(酷!).这是它的工作原理: 子类型 'TkRef' =>作为“标量引用";强制 'TkRef',来自 'Str',通过 { my $r = $_;返回 \$r };有 'some_val' =>(is => 'rw', isa => 'Tk ..
发布时间:2021-09-08 18:56:45 其他开发

我应该如何序列化 Moose 对象数组?

我使用 MooseX::StorageMoose 对象的序列化.我可以用它来将多个 Moose 对象序列化到同一个文件,或者更具体地说,是一个 Moose 对象的数组或散列吗? 我想我可以定义另一个 Moose 对象('array_of_myobj'),但这不是很优雅. 那么,您建议如何序列化 Moose 对象的数组(或哈希)? 解决方案 您不必因为文件 IO 可用而让 Moo ..
发布时间:2021-08-30 19:32:56 其他开发

如何使 Moose 构造函数在传递未声明的属性时死亡?

Moose 默认非常宽容.您可以拥有一个名为 Cucumber 的类,并将未声明的属性(如 wheels)传递给构造函数.默认情况下,Moose 不会对此抱怨.但是我可能更喜欢 Moose 而不是 die 而不是接受未声明的属性.我怎样才能做到这一点?我似乎记得读过它是可能的,但在文档中找不到它说的地方. 包古尔克;使用驼鹿;有颜色 =>是 =>'rw',默认 =>'绿色';没有驼鹿;__PAC ..
发布时间:2021-06-15 21:02:14 其他开发

我可以在基类中使用 Moose 中的属性修饰符来处理来自子类的多个属性吗?

我有几个模块具有许多接受日期时间相关的属性日期戳并返回一个人类可读的字符串( dd Mon yyyy hh:mm:ss ). package ModuleOne;使用驼鹿;扩展“模块库";有 date_attr_one =>( ... ); 然后…… package ModuleTwo;使用驼鹿;扩展“模块库";有 date_attr_mouse =>( ... ); 由于它目前正在工作, ..
发布时间:2021-06-15 20:57:57 其他开发

使用 Moose 时如何获取方法引用

我正在尝试弄清楚如何使用 Moose 获取方法代码参考. 下面是我正在尝试做的一个例子: 使用 Modern::Perl;包装存储;使用驼鹿;子批次存储{我的 ($self, $data) = @_;... 存储 $data ...}包解析器;使用驼鹿;有 'generic_batch_store' =>( isa => 'CodeRef' );子解析{我的 $self = shift;我 ..
发布时间:2021-06-15 20:56:38 其他开发

使用 Moose 时在构造时分配方法体的最佳方法是什么?

我正在使用 Moose(特别是 MooseX::Declare)来创建一个迭代器对象,Iter,它有一个 next 方法,根据在 while 语句中使用的需要,推进状态并返回 0 或 1.我遇到的问题是,根据其中一个构造参数的存在,next 需要执行两组截然不同的操作.在我看来,我有五个选项: if ... then 在 next 方法中 子类 哈希调度 符号表操作 将方法放在不同的 ..
发布时间:2021-06-15 20:54:39 其他开发

使用或不使用 namespace::sweep 和/或 Modern::Perl

在我的最后一个问题中@Borodin评论了我的问题: 您应该首先删除 Modern::Perl 和 namespace::sweep.应避免使用作为 pragma 的模块. 我有点困惑,因为: 在最新的Moose BestPractices 手册推荐使用 namespace::autoclean. use namespace::autoclean 位只是良好的代码卫生,因为 ..
发布时间:2021-06-15 20:54:33 其他开发

Perl 内部结构和 Moose:常量折叠优化

我一直对 Perl 执行的常量折叠优化感到好奇,但是当代码涉及 Moose 时,很可能不会执行常量折叠(如果我错了,请纠正我). > 我有包含以下方法的 Moose 代码: sub foo {我的 ($self) = shift;我的 $test_y = $self->pos->[1];#...if ($self->is_map_val($self->pos->[0]+8, $test_y+ ..
发布时间:2021-06-15 20:51:35 其他开发

是“OK​​"吗?用Moose 包装标准Perl 模块?

许多标准模块都直接使用 perl —— 问题是这些人不使用 Moosey 的东西,所以我发现自己用 Moose 包装它们,或者为了方便在更大的库中重新发明一些简单的函数. 我想知道对于使用 Moose 的开发人员如何合并非 Moose 的其他库,是否有任何通用方法. 作为 Perl 和 Moose 的新手,我想更好地了解 Moose 在这种情况下的使用方式,或者当通常更喜欢使用 Moo ..
发布时间:2021-06-15 20:50:54 其他开发

Moose:如何获取一组对象?特质?

我开始意识到这是为初学者准备的: 包坏了;有'arr' =>( is => 'rw', 'ArrayRef[Str]' );包主;我的 $bad = Bad->new(arr => [ "foo", "bar" ]);打印 $bad->arr->[0], "\n"; 输入特征.不过,我对traits API 感到不知所措.我是不是误解了什么?我可以以某种方式获得这个 API 吗?: prin ..
发布时间:2021-06-15 20:50:32 其他开发

Path::Class::File 或 ::Dir &Moose 初始化和强制

目前拥有: 包本地;使用警告;使用驼鹿;使用方法::签名::简单;使用路径::类::文件;使用 Path::Class::Dir;方法_build_path_class {我的 $str = $self->pathstr;返回 Path::Class::Dir->new($str) if (-d $str);返回 Path::Class::File->new($str);}有 'pathstr' ..
发布时间:2021-06-15 20:43:02 其他开发

如何在 Moose 中存储哈希的哈希?

我想知道,在 Moose 中存储哈希哈希的最佳方法是什么.让我们以这样的哈希为例: my %hash = ('step1' => {'extraction' => \$object1,'分析' =>\$object2},'步骤2' =>{'提取' =>\$object3,'分析' =>\$object4}); 但我想将这个保存在驼鹿属性中.我应该如何组织对此的访问(阅读、写作).网上的例子主要 ..
发布时间:2021-06-15 20:42:55 其他开发

如何处理 Moose 中的嘲讽角色?

假设我有两个角色:Simple::Tax 和 Real::Tax.在测试情况下,我想使用 Simple::Tax,而在生产中,我想使用 Real::Tax.做这个的最好方式是什么?我的第一个想法是使用不同版本的 new 方法来创建具有不同角色的对象: #!/usr/bin/perl使用警告;{包简单::税;使用 Moose::Role;需要“价格";子计算税{我的 $self = shift;r ..
发布时间:2021-06-15 20:42:28 其他开发

Moose:当属性值改变时,计算的缓存结果会过期吗?

在我们的类中,我们有一个模式,我们创建一个属性来表示计算值.出于显而易见的原因,我们希望缓存计算值然后在底层值之一更改时使缓存无效. 所以我们目前有这个: 封装FooBar;使用驼鹿;有 'foo' =>(存取器 =>{'富' =>子{我的 $self = shift;如果 (@_ > 0) {#作家$self->{foo} = $_[0];# 重置依赖我的字段$self->{bar} = ..
发布时间:2021-06-15 20:37:05 其他开发

如果 Moose 构建器方法失败,我该怎么办?

处理构建器方法失败的最佳方法是什么? 例如: package MyObj;使用驼鹿;使用 IO::File;有 =>'file_name' ( is => 'ro', isa => 'Str', required =>1);有 =>'file_handle' ( is => 'ro', isa => 'IO::File', lazy_build => 1 );子_build_file_ha ..
发布时间:2021-06-15 20:36:16 其他开发

Unblessing Perl 对象并为 convert_blessed 构造 TO_JSON 方法

在 这个答案中,我找到了一个简单的 TO_JSON 方法的建议,这是需要的用于将祝福对象序列化为 JSON. sub TO_JSON { return { %{ shift() } };} 谁能详细解释一下它是如何工作的? 我改成: sub TO_JSON {我的 $self = shift;# 对象本身——祝福的引用打印 STDERR Dumper $self;我的 %h = %{ ..
发布时间:2021-06-15 20:35:15 其他开发