问题标签 [moose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
132 浏览

perl - MooseX::AttributeHelpers 和 MooseX::FollowPBP 是否正确交互?

以下代码定义了两个类 (DeckADeckB),它们的区别仅在于它们是否使用MooseX::AttributeHelpers附带的功能。Moose 生成的吸气剂DeckB不是我所期望的。这是一个错误还是我误解了MooseX::AttributeHelpersMooseX::FollowPBP应该如何交互?

我现在的解决方法是避免is在这种情况下使用参数,而是根据需要声明 areaderwriter

输出:

0 投票
2 回答
766 浏览

perl - 如何在 Moose 中最好地使用默认设置触发访问器?

我有一种情况,我想缓存一些计算供以后使用。假设我有一个允许值列表。由于我将检查该列表中是否有任何内容,因此我希望将其作为哈希值以提高效率和方便性。否则我必须grep。

如果我使用 Moose,如果每次更改允许值列表时都重新计算缓存,那就太好了。我可以用一个足够简单的触发器来做到这一点......

并且两者将保持同步...

现在假设我想要一个默认的allowed_values,足够简单的改变......

...除了设置默认值不会调用触发器。要将其用于 DWIM,我需要复制缓存。

Moose 文档明确表示trigger在设置默认值时不会被调用,但它会妨碍您。我不喜欢那里的重复。

有更好的方法吗?

0 投票
2 回答
1597 浏览

mysql - 如何安装 MySQL::Slurp 所需的依赖项?

我正在尝试安装MySQL:: Slurp 中的 mysqlslurp 实用程序。

我发现它需要Moose,因此我也安装了该软件包。

但我仍然无法使用该mysqlslurp命令。我收到一个错误:

0 投票
1 回答
372 浏览

perl - MooseX::NonMoose 类中的 mixin 问题

考虑以下:

编译时的输出是:

我为什么在乎?因为当我尝试use使用 CGI::Application::Plugin::* 类时,它希望我CGI::Application已经在编译时继承自。插件类尝试add_callback在我的类上作为类方法调用,但不能,因为我@ISA的尚未设置。

解决这个问题的最佳方法是什么?@ISA在一个块中手动调整会BEGIN干扰MooseX::NonMoose吗?

编辑

以下似乎有效,但我觉得它令人反感:

我对 Moose 的内部结构知之甚少(或任何东西,真的),不知道这是否是个好主意。

0 投票
4 回答
560 浏览

perl - 如何扩展 Moose 的自动编译指示导出?

你知道 Moose 是如何在导入过程中自动开启strict的吗?warnings我想通过打开autodieuse feature ':5.10'在我的 Moose 类中扩展这种行为。

我已经追踪到 Moose 在哪里执行此操作,在 中,它为调用和调用类的 MooseMoose::Exporter组装了一个自定义子。importstrict->importwarnings->import

但是,我想不出一种以 Moose 方式扩展此导入方法的方法。

我该如何处理?

http://www.friedo.com/bullwinkle.gif

0 投票
2 回答
2115 浏览

perl - Perl Moose 方法修饰符:在 'before' 和 'after' 之前调用 'around'

我正在使用 Moose,我需要在我的项目中包装方法调用。重要的是我的包装代码是最外层的修饰符。到目前为止,我所做的是将我的方法修饰符放在 Moose 角色中,然后在我的课程结束时应用该角色,如下所示:

这使我可以合理地确定我的角色的修饰符是最后定义的,因此为我提供了“之前”和“之后”的正确行为。(角色中的“之前”和“之后”被称为最开始和最末。)

我最初认为这已经足够了,但我现在真的需要用“around”以类似的方式包装方法。Moose 所基于的 Class::MOP 首先应用“around”修饰符,因此它们在“before”之后和“after”之前被调用。

有关更多详细信息,这是我的修饰符的当前调用顺序:

我真的需要这样的东西:

关于如何在我想要的地方应用/调用我的“周围”修饰符的任何想法?我知道我可以做一些符号表黑客攻击(比如 Class::MOP 已经在做),但我真的不想这样做。

0 投票
1 回答
1504 浏览

perl - 如何访问应用我的 Moose 角色的模块的元类?

我正在使用Moose 角色在类中的某些访问器方法周围应用一些包装器行为。我想将此角色应用于许多模块,每个模块都有一组不同的属性,我想包装其访问器。有没有办法从角色内部访问正在应用的模块的元类?即是这样的:

0 投票
5 回答
804 浏览

perl - “现代” Perl 入门资源

在听说了 Perl 生态系统的新部分,例如 Moose、DeclareX 和 Catalyst 之后,我认为看看 Perl 会很不错。不幸的是,我能找到的所有介绍性材料都是针对 Perl 5.8 或 5.6 的,而且对这些较新的框架一无所知——更不用说在最近的 Perl 版本中引入的功能,例如~~运算符。有哪些资源可供对 Perl 新手感兴趣并想从一开始就学习当前最佳实践方法的人使用?

虽然我可以阅读骆驼书的第 3 版,然后通过成堆的 CPAN 文档等来完成剩下的工作,但我非常感谢一个不会强迫我学习一堆过时的方法的教程东西,只是为了在我阅读参考手册时转身并再次忘记它们。有据可查并使用 Perl 的这些较新的部分的真实世界的代码也会很棒。

0 投票
3 回答
414 浏览

perl - 如何在 Perl 和 Moose 中创建不可变对象的循环图?

这似乎是一个明显没有希望的情况,但是在 Perl 中创建不可变对象的循环图有什么技巧吗?像这样的东西:

现在,如果我想$a->child指向$b,我该怎么办?

0 投票
4 回答
696 浏览

perl - Moose:属性值更改时缓存的计算结果会过期吗?

在我们的类中,我们有一个模式,我们创建一个属性来表示计算值。出于显而易见的原因,我们希望缓存计算的值,然后在基础值之一更改时使缓存无效。

所以我们目前有这个:

当计算值依赖于其他计算值时,这种长手方法变得非常繁琐且容易出错。

'bar' 是否有更智能/更简单的方法来监控它所依赖的属性,而不是让 'foo' 知道谁依赖它?另外如何避免通过哈希成员访问设置栏?