问题标签 [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.
perl - MooseX::AttributeHelpers 和 MooseX::FollowPBP 是否正确交互?
以下代码定义了两个类 (DeckA
和DeckB
),它们的区别仅在于它们是否使用MooseX::AttributeHelpers附带的功能。Moose 生成的吸气剂DeckB
不是我所期望的。这是一个错误还是我误解了MooseX::AttributeHelpers和MooseX::FollowPBP应该如何交互?
我现在的解决方法是避免is
在这种情况下使用参数,而是根据需要声明 areader
和writer
。
输出:
perl - 如何在 Moose 中最好地使用默认设置触发访问器?
我有一种情况,我想缓存一些计算供以后使用。假设我有一个允许值列表。由于我将检查该列表中是否有任何内容,因此我希望将其作为哈希值以提高效率和方便性。否则我必须grep。
如果我使用 Moose,如果每次更改允许值列表时都重新计算缓存,那就太好了。我可以用一个足够简单的触发器来做到这一点......
并且两者将保持同步...
现在假设我想要一个默认的allowed_values
,足够简单的改变......
...除了设置默认值不会调用触发器。要将其用于 DWIM,我需要复制缓存。
Moose 文档明确表示trigger
在设置默认值时不会被调用,但它会妨碍您。我不喜欢那里的重复。
有更好的方法吗?
perl - MooseX::NonMoose 类中的 mixin 问题
考虑以下:
编译时的输出是:
我为什么在乎?因为当我尝试use
使用 CGI::Application::Plugin::* 类时,它希望我CGI::Application
已经在编译时继承自。插件类尝试add_callback
在我的类上作为类方法调用,但不能,因为我@ISA
的尚未设置。
解决这个问题的最佳方法是什么?@ISA
在一个块中手动调整会BEGIN
干扰MooseX::NonMoose
吗?
编辑
以下似乎有效,但我觉得它令人反感:
我对 Moose 的内部结构知之甚少(或任何东西,真的),不知道这是否是个好主意。
perl - 如何扩展 Moose 的自动编译指示导出?
你知道 Moose 是如何在导入过程中自动开启strict
的吗?warnings
我想通过打开autodie
并use feature ':5.10'
在我的 Moose 类中扩展这种行为。
我已经追踪到 Moose 在哪里执行此操作,在 中,它为调用和调用类的 MooseMoose::Exporter
组装了一个自定义子。import
strict->import
warnings->import
但是,我想不出一种以 Moose 方式扩展此导入方法的方法。
我该如何处理?
perl - Perl Moose 方法修饰符:在 'before' 和 'after' 之前调用 'around'
我正在使用 Moose,我需要在我的项目中包装方法调用。重要的是我的包装代码是最外层的修饰符。到目前为止,我所做的是将我的方法修饰符放在 Moose 角色中,然后在我的课程结束时应用该角色,如下所示:
这使我可以合理地确定我的角色的修饰符是最后定义的,因此为我提供了“之前”和“之后”的正确行为。(角色中的“之前”和“之后”被称为最开始和最末。)
我最初认为这已经足够了,但我现在真的需要用“around”以类似的方式包装方法。Moose 所基于的 Class::MOP 首先应用“around”修饰符,因此它们在“before”之后和“after”之前被调用。
有关更多详细信息,这是我的修饰符的当前调用顺序:
我真的需要这样的东西:
关于如何在我想要的地方应用/调用我的“周围”修饰符的任何想法?我知道我可以做一些符号表黑客攻击(比如 Class::MOP 已经在做),但我真的不想这样做。
perl - “现代” Perl 入门资源
在听说了 Perl 生态系统的新部分,例如 Moose、DeclareX 和 Catalyst 之后,我认为看看 Perl 会很不错。不幸的是,我能找到的所有介绍性材料都是针对 Perl 5.8 或 5.6 的,而且对这些较新的框架一无所知——更不用说在最近的 Perl 版本中引入的功能,例如~~
运算符。有哪些资源可供对 Perl 新手感兴趣并想从一开始就学习当前最佳实践方法的人使用?
虽然我可以阅读骆驼书的第 3 版,然后通过成堆的 CPAN 文档等来完成剩下的工作,但我非常感谢一个不会强迫我学习一堆过时的方法的教程东西,只是为了在我阅读参考手册时转身并再次忘记它们。有据可查并使用 Perl 的这些较新的部分的真实世界的代码也会很棒。
perl - 如何在 Perl 和 Moose 中创建不可变对象的循环图?
这似乎是一个明显没有希望的情况,但是在 Perl 中创建不可变对象的循环图有什么技巧吗?像这样的东西:
现在,如果我想$a->child
指向$b
,我该怎么办?
perl - Moose:属性值更改时缓存的计算结果会过期吗?
在我们的类中,我们有一个模式,我们创建一个属性来表示计算值。出于显而易见的原因,我们希望缓存计算的值,然后在基础值之一更改时使缓存无效。
所以我们目前有这个:
当计算值依赖于其他计算值时,这种长手方法变得非常繁琐且容易出错。
'bar' 是否有更智能/更简单的方法来监控它所依赖的属性,而不是让 'foo' 知道谁依赖它?另外如何避免通过哈希成员访问设置栏?