8得票2回答
使用Moose、Try::Tiny和TryCatch时出现异常行为

我刚开始使用Moose并遇到了一个奇怪的问题,我无法解决。以下代码: #!/usr/bin/env perl use strict; use warnings; use Try::Tiny; { package Foo; use Moose; has x =>...

9得票3回答
我该如何在Perl中调用存储在哈希表中的函数名称?

我确定文档中某处涵盖了这个问题,但是我一直没有找到... 我正在寻找可以调用存储在哈希表中类名称的方法的语法糖(与简单标量不同): use strict; use warnings; package Foo; sub foo { print "in foo()\n" } package ...

19得票9回答
检查Perl函数参数是否值得?

关于MooseX::Method::Signatures和早期的模块Params::Validate,有很多关注,它们都设计用于对方法或函数的每个参数进行类型检查。我正在考虑在我的所有未来Perl代码中使用前者,包括个人和工作场所。但我不确定这是否值得努力。 我想到了之前看到(和编写的)没有...

7得票4回答
Moose中的单例角色

我正在尝试使用Perl和Moose编写单例角色。我知道有一个MooseX :: Singleton模块可用,但在我们的项目中需要引入另一个CPAN模块时总是会遇到阻力。在尝试了这个方法并遇到一些问题后,我想了解为什么我的方法不起作用。我编写的单例角色如下: package Singleton...

17得票2回答
Moose和Python的面向对象系统有何区别?

我的原问题过于模糊,被“关闭为不具建设性”。因此,我将修改问题以适应已经发布的答案。 :-) 我对比较Perl的Moose OO框架Moose和Python的标准OO框架感兴趣。首先比较一下,创建一个有几个属性和一些方法的简单类有多容易? 现在,如果这个问题被重新开放,我还想知道: 如果我...

31得票3回答
能否有人解释一下Perl中的(my $self = shift)是什么意思?

我很难理解OO Perl和my $self = shift;的交集。这些单独元素的文档都很棒,但我找到的任何内容都没有涉及它们如何一起工作。 我一直在使用Moose制作带有属性的模块,在模块内引用该模块的属性当然很有用。我一遍又一遍地被告知在子例程中使用my $self = shift;将模...

12得票3回答
我该如何从Moose中获得结构化异常?

考虑下面这个简单的类:package Foo; use Moose; has foo => ( is => 'rw', isa => 'Int' ); 然后是这段代码:use Try::Tiny; use Foo; my $f = try { Foo->new(...

9得票3回答
为什么Moose代码运行如此缓慢?

我正在尝试解析一个大型的XML文件。我使用XML::SAX(使用Expat而不是perl实现)读取它,并将所有第二层及以下节点放入我的“Node”类中: package Node; use Moose; has "name" => ( isa => "Str", ...

16得票3回答
驼鹿"构建器"与"默认值"的区别

我了解使用 builder 可以使子类轻松地覆盖属性默认值,而角色可以require它们。这也可以通过以下方式使用default来完成:has 'foo' => is => 'rw', isa => 'Str', default ...

7得票1回答
Moose::Error::Croak错误报告不是从调用者的角度进行的

我最近刚开始学习Moose,它不仅是一个方便使用的OO框架,也适合学习新的OO概念。其中一件我想做的事情是从调用者的角度进行对象创建时的错误报告。我发现Moose有模块Moose::Error::Croak,它告诉Moose通过croak调用来覆盖默认的错误报告。我使用了它,但好像并没有起作用...