问题标签 [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 - 使用 Apache::Session 和 CODE 引用存储 Moose 对象的替代方法
我有一个想要使用 Apache::Session::File 存储的 Moose 类。
但是,默认情况下 Apache::Session::File 不会存储它,而是我收到错误消息:
这个问题可以通过设置来规避
为了允许 CODE 引用被序列化。
下面列出了 Moose 类中的违规方法,该方法从 mysql 数据库中检索列:
所以大概 dbh 对象(即 DBIx::Connector)包含 CODE 引用。
为了允许这个 Moose 类的序列化,是否有比设置 $Storable::Deparse 和 $Storable::Eval 更好的选择?
以下测试脚本产生错误:
SQL连接类定义为:
TestCell 类定义为:
perl - Moose真的这么慢吗?
我最近下载了 Moose。作为实验,我重写了 Moose 中的一个现有模块。这似乎是避免编写大量重复代码的便捷方法。我运行了模块的测试,我注意到它有点延迟。我用 -d:DProf 分析了代码,似乎只包括该行
代码中的运行时间增加了大约 0.25 秒(在我的电脑上)。这是典型的吗?我是不是做错了什么,是我安装错了,还是我们真的应该期待这么多延迟?
perl - 在 Moose 子例程中,$meta 是如何进入 @_ 的?
chromatic 最近的博客让我对 Moose 子程序感到好奇has
。我正在查看 Moose 源代码,并注意到在has
子例程中,有一个$meta
从@_
. 从哪里来$meta
?我已经开始涉足各种 Moose 和 Class::MOP 模块。在许多子例程中,它似乎$meta
通常作为 中的第一个参数@_
,即使它没有专门作为参数传递给它。
编辑:这是has
子例程的原始源代码:
perl - 驼鹿对象中构建器子例程的参数
我目前正在将构建器方法委托给扩展我的基类之一的所有对象。我面临的问题是我需要所有对象要么读取自身的属性,要么传入一个值。
这是目前可能的还是我将不得不以其他方式做到这一点?
perl - 如何将 Moose 对象转换为 JSON 以在 Catalyst 中使用?
我有一系列 Moose 对象,我希望通过Catalyst::View::JSON将它们提供给JSON::XS。JSON::XS 无法编码祝福的数据结构。我知道有MooseX::Storage::Format::JSON可以——有点——做我想做的事;但是,它似乎过于沉重。我正在寻找的信息与XXX.pm提供的信息基本相同。我只希望原始数据结构递归地不被祝福,以便(内部使用的驱动程序)可以显示它。JSON::XS
JSON::Any
C:V:JSON
使用对象Catalyst::View::JSON
的最佳方式是什么?看来我有四个明显的选择:JSON::XS
Moose
- 如果暴露的参数是 Moose 对象,则通过修补以读取并最终确定请求来使用Moose
Catalyst::View::JSON
对象C:V:JSON
。freeze
- 补丁
JSON::XS
以回退到$obj->freeze if $obj->isa('Moose') && $obj->does('MooseX::Storage::Format::JSON')
. 我应该调查MX:S:F:JSON
以确保由JSON::Any
和 proxy使用的类MX:S:F:JSON
是(如果为调用使用的 Moose 对象选择不同的内部编码器,则JSON::XS
讨厌想到大量的错误。JSON::Any
JSON::XS
- 弄清楚如何递归地取消并让它
Catalyst::View::JSON
做它的事情。 - 根本不要使用
Catalyst::View::JSON
。只需写入 STDOUT$obj->freeze
并手动完成请求。这似乎是最骇人听闻的。
我敢肯定还有其他选择,有什么想法吗?我最好的选择是什么?
perl - 在许多基于 Moose 的子类中覆盖属性的最有效方法是什么?
我正在使用HTML::FormHandler。要使用它,应该从它继承子类,然后您可以覆盖一些属性,例如field_name_space
or attribute_name_space
。
但是,我现在有很多表单都在扩展HTML::FormHandler
或其基于 DBIC 的变体HTML::FormHandler::Model::DBIC,因此这些被覆盖的属性重复了很多次。
我试图将它们放在一个角色中,但得到一个错误,即+attr
角色中不支持符号。很公平。
消除这种重复的最佳方法是什么?我想也许是子类化,但后来我不得不为HTML::FormHandler
and做两次,而且HTML::FormHandler::Model::DBIC
我相信一般的想法是,子类化通常用 Roles 更好地实现。
更新:我认为举个例子是个好主意。这就是我目前正在做的事情——它涉及代码重复。如您所见,一种表单使用不同的父类,因此我无法创建一个父类来放置属性覆盖。我必须创建两个 - 这也增加了冗余。
perl - 你如何命名一个类/包/模块
您如何命名一个唯一目的是扩展另一个模块以便您可以对其应用角色的包?我需要一个使用Moose扩展(子类)Template::Context的包,因此我可以创建角色和特征以应用于它,但我不知道如何命名这个包(类)。有什么建议吗?
perl - 在 around 方法修饰符周围传递变量
是否可以在多次调用around
MethodModier之间传递变量?示例(这不起作用,但希望能传达我想要做的事情)
我最终希望将这些“周围”放置在可插入的特征中,在那里我真的不知道事先加载了哪些,但最终输出将被整齐地格式化。
我可能认为这完全错误,因此欢迎提出其他建议。
perl - 我可以订购作为特征的一部分加载的顺序方法修饰符吗?
这是对上一个问题的跟进。如果我有多个带有around
修饰符的插件/特征,是否可以确保特定的执行顺序(看看我如何不确定哪个会实际加载)?还是我真的只能在我编写的代码和文档中控制它?
示例:我有 3 个角色,每个角色都有一个around
,每个角色都可以作为一个Trait加载,但如果加载超过 1 个,则必须按特定顺序加载它们才能正常工作。例如,按该顺序加载 Trait ABC 可以正常工作,但像 Trait BAC 一样加载它会导致行为不稳定。
有没有办法可以防止用户(程序员)以错误的顺序加载它们。