问题标签 [moo]

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 投票
1 回答
409 浏览

perl - 类型::小而深的强制

我试图让深层强制工作Type::Tiny没有任何成功。从手册上说:

“某些参数化类型约束如果它们的参数有强制,则可以自动获取强制。例如: ArrayRef[Int->plus_coercions(Num, q{int($_)}) ] ......按照你的意思!”

我试图完成的是得到这样的“做我的意思”:

Family当使用 a 的元素进行实例化时,Str它们应该被自动强制转换为Person对象。我尝试了一系列不同的想法(plus_coercions、类型库等),但没有任何运气。他们都以同样的方式失败。

当使用 plus_coercions (from Strto Object)

Type::Tiny 抛出异常:

我知道我可以通过将参数修改为Family->new使用BUILDARGSsub in来解决这个问题Family,但如果 Type::Tiny 可以自动做到这一点,那就太好了。

更新

感谢 Tobys 的友好帮助,我得到了这个工作。唯一让我有点困扰的部分是使用ArrayRef[Object]而不是正确的ArrayRef[InstanceOf['Person']]InstanceOf没有任何plus_coercions)。任何Object类的实例都可以插入到中,这肯定不是您想要的。members

通过制作一个class_type. 这是完整的工作代码:

运行时打印效果很好mom, dad, girl, dog

0 投票
2 回答
12101 浏览

perl - 在 @INC 中找不到 Moo.pm

我正在尝试在 dzsoft perl 编辑器中运行 .pm 程序。但我收到了这个错误

我的解释器是 ActivePerl-5.18.2.1802-MSWin32-x64-298023 我怎样才能将 moo.pm 添加到 lib?

0 投票
2 回答
1470 浏览

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

这个答案中,我找到了一个简单TO_JSON方法的推荐,这是将祝福对象序列化为 JSON 所必需的。

有人可以详细解释它是如何工作的吗?

我将其更改为:

很多问题...... :( 简单地说,我无法理解 3 行 Perl 代码。;(

我需要,TO_JSON但它会过滤掉:

  • 不需要的属性和
  • 也未设置属性(例如,对于那些has_${attr}谓词返回 false 的属性)

这是我的代码——它有效,但我真的不明白为什么 unblessing 有效……</p>

编辑:澄清问题:

  • %{ $hRef }解除引用$hRef(获取引用指向的哈希),但为什么要从受祝福的对象引用中获取普通哈希 $self
  • 换句话说,为什么$self是 hashref?
  • 我试图制作一个像这样的哈希切片,@{$self}{ grep {!/xx/} keys %$self}但它没有用。因此我创造了那个可怕TO_JSON的 .
  • 如果$self是 hashref,为什么keys %$self只返回具有值的属性,而不是所有声明的属性(例如 the nntoo - 参见has)?
0 投票
1 回答
935 浏览

perl - Moo/Moose 属性 - “keys %$self”如何工作?

在我的最后一个问题中,我问了许多不相关的事情,并且不能接受多个答案,只回答一些问题,所以这里明确(我希望)定义了关于(Moo)属性的问题。

因此,受祝福的对象引用了一个仅包含已设置属性的对象。

问题:

  • 为什么$self引用,(所以包含%$self)只有设置的属性,而不是全部,例如nn来自示例代码的属性?(当bless唯一将referencepackage为什么$omoo不包含所有包变量相关联时?)驼鹿从哪里知道它?)
  • 在 Moo 的情况下如何获取 all_attributes?

显然我错过了一些基本知识.. :(

0 投票
1 回答
670 浏览

perl - 有没有办法覆盖 Moo 中的构造函数?

我正在开发一个需要在构造函数周围添加包装器的 MooX 模块。

我试过方法修改或直接改变导入方法*{"${target}::new"}没有效果。

那么我该怎么做呢?

0 投票
1 回答
469 浏览

perl - Moo 处理 => '角色' 不起作用

对于我的一生,我无法弄清楚为什么这不像文档所说的那样工作。我用谷歌搜索了这个问题,查看了源代码等。这是一个错误还是我做错了什么,我只是看不到。

这是代码:#!/usr/bin/env perl

尝试运行

得到这个

0 投票
2 回答
1076 浏览

perl - 使用 Moo(se) 优于 Perl OO 的真正优势

我目前在一家公司工作,我们正在那里进行 Perl 开发。但是代码真的很乱,使用了非常古老的 Perl 习语,所以我决定慢慢清理它并向我的同事传授 Modern::Perl、优秀的软件设计、OOP - 抽象、耦合、继承、SOLID 原则等。有一个缺点,我在这里只工作了一个月,所以我在这里很新。

我的问题是:我可以(如果可以的话)说服他们考虑从普通的 Perl OO 切换到 Moo(se) 吗?它有什么优点?我需要非常好的理由让他们考虑。

使用这些模块是否有很大的性价比?我从经验中知道,使用这些模块非常舒服(特性也非常好),但我担心他们会因为性能原因而拒绝切换。

所以。有什么优势吗?您如何向被困在 2000 年前时代的 Perl 开发人员描述它?

0 投票
1 回答
478 浏览

perl - 是否可以使属性配置依赖于 Moo 中的另一个属性?

我已经阅读了各种教程和Moo文档,但我找不到任何描述我想做的事情。

我想做的是如下所示:

如果我对这个想法不太了解,我将如何根据另一个属性的值来制作属性“ro”或“rw”并且是否需要?

请注意,枚举来自Type::Tiny

0 投票
1 回答
334 浏览

perl - Changing writer prefix when (is => “rwp”)

If I want to change write protected attribute ie.

one have to use _set_attr().

Is it possible to change that to _attr() without using explicit writer?

Tried use MooseX::::AttributeShortcuts -writer_prefix => 'prefix'; but it did not work.

0 投票
2 回答
595 浏览

perl - 为什么我的 Moo 对象继承自非 Moo 类的某些模块被祝福到父包中?

我正在尝试使用GObject IntrospectionMoo在 Perl 中创建 Gtk3 应用程序。有一个来自 Gtk 的非 Moo 类Gtk::ApplicationWindow,我通过 Moo 使用extends 'Gtk::ApplicationWindow'. 问题是,当创建该子类的对象时,它仍然是父类的类型 - 即Gtk::ApplicationWindow.

我通过子类化我自己的非 Moo 类来尝试同样的事情,并且从这个子类创建的对象是正确的类型。造成这种差异的原因可能是什么?