问题标签 [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.
perl - 类型::小而深的强制
我试图让深层强制工作Type::Tiny
没有任何成功。从手册上说:
“某些参数化类型约束如果它们的参数有强制,则可以自动获取强制。例如:
ArrayRef[Int->plus_coercions(Num, q{int($_)}) ]
......按照你的意思!”
我试图完成的是得到这样的“做我的意思”:
Family
当使用 a 的元素进行实例化时,Str
它们应该被自动强制转换为Person
对象。我尝试了一系列不同的想法(plus_coercions、类型库等),但没有任何运气。他们都以同样的方式失败。
当使用 plus_coercions (from Str
to Object
)
Type::Tiny 抛出异常:
我知道我可以通过将参数修改为Family->new
使用BUILDARGS
sub in来解决这个问题Family
,但如果 Type::Tiny 可以自动做到这一点,那就太好了。
更新
感谢 Tobys 的友好帮助,我得到了这个工作。唯一让我有点困扰的部分是使用ArrayRef[Object]
而不是正确的ArrayRef[InstanceOf['Person']]
(InstanceOf
没有任何plus_coercions
)。任何Object
类的实例都可以插入到中,这肯定不是您想要的。members
通过制作一个class_type
. 这是完整的工作代码:
运行时打印效果很好mom, dad, girl, dog
。
perl - 在 @INC 中找不到 Moo.pm
我正在尝试在 dzsoft perl 编辑器中运行 .pm 程序。但我收到了这个错误
我的解释器是 ActivePerl-5.18.2.1802-MSWin32-x64-298023 我怎样才能将 moo.pm 添加到 lib?
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
只返回具有值的属性,而不是所有声明的属性(例如 thenn
too - 参见has
)?
perl - Moo/Moose 属性 - “keys %$self”如何工作?
在我的最后一个问题中,我问了许多不相关的事情,并且不能接受多个答案,只回答一些问题,所以这里明确(我希望)定义了关于(Moo)属性的问题。
因此,受祝福的对象引用了一个仅包含已设置属性的对象。
问题:
- 为什么
$self
引用,(所以包含%$self
)只有设置的属性,而不是全部,例如nn
来自示例代码的属性?(当bless
唯一将reference
与package
为什么$omoo
不包含所有包变量相关联时?)驼鹿从哪里知道它?) - 在 Moo 的情况下如何获取 all_attributes?
显然我错过了一些基本知识.. :(
perl - 有没有办法覆盖 Moo 中的构造函数?
我正在开发一个需要在构造函数周围添加包装器的 MooX 模块。
我试过方法修改或直接改变导入方法*{"${target}::new"}
没有效果。
那么我该怎么做呢?
perl - Moo 处理 => '角色' 不起作用
对于我的一生,我无法弄清楚为什么这不像文档所说的那样工作。我用谷歌搜索了这个问题,查看了源代码等。这是一个错误还是我做错了什么,我只是看不到。
这是代码:#!/usr/bin/env perl
尝试运行
得到这个
perl - 使用 Moo(se) 优于 Perl OO 的真正优势
我目前在一家公司工作,我们正在那里进行 Perl 开发。但是代码真的很乱,使用了非常古老的 Perl 习语,所以我决定慢慢清理它并向我的同事传授 Modern::Perl、优秀的软件设计、OOP - 抽象、耦合、继承、SOLID 原则等。有一个缺点,我在这里只工作了一个月,所以我在这里很新。
我的问题是:我可以(如果可以的话)说服他们考虑从普通的 Perl OO 切换到 Moo(se) 吗?它有什么优点?我需要非常好的理由让他们考虑。
使用这些模块是否有很大的性价比?我从经验中知道,使用这些模块非常舒服(特性也非常好),但我担心他们会因为性能原因而拒绝切换。
所以。有什么优势吗?您如何向被困在 2000 年前时代的 Perl 开发人员描述它?
perl - 是否可以使属性配置依赖于 Moo 中的另一个属性?
我已经阅读了各种教程和Moo文档,但我找不到任何描述我想做的事情。
我想做的是如下所示:
如果我对这个想法不太了解,我将如何根据另一个属性的值来制作属性“ro”或“rw”并且是否需要?
请注意,枚举来自Type::Tiny。
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.
perl - 为什么我的 Moo 对象继承自非 Moo 类的某些模块被祝福到父包中?
我正在尝试使用GObject Introspection和Moo在 Perl 中创建 Gtk3 应用程序。有一个来自 Gtk 的非 Moo 类Gtk::ApplicationWindow
,我通过 Moo 使用extends 'Gtk::ApplicationWindow'
. 问题是,当创建该子类的对象时,它仍然是父类的类型 - 即Gtk::ApplicationWindow
.
我通过子类化我自己的非 Moo 类来尝试同样的事情,并且从这个子类创建的对象是正确的类型。造成这种差异的原因可能是什么?