问题标签 [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 - Watch change of attribute inside Perl class
Can anyone provide a code example how do you set watchers on variable change inside of class ? I tried to do it several ways using different features (Scalar::Watcher, trigger attribute of Moo) and OOP frameworks (Moo, Mojo::Base) and but all failed.
Below is my failed code for better understanding of my task. In this example i need to update attr2 everytime when attr1 changed.
Using Mojo::Base and Scalar::Watcher:
Using Moo and trigger:
Any suggestion is much appreciated.
perl - Perl Moose 或 Moo 中的属性委托
最初的主题是从这里开始的,但我需要一个工作代码示例,如何使用 Moo 或 Moose 正确委派属性。
根据文档,我编写了这段代码来检查:
但是这段代码会产生错误:
您不能在 3.pl 第 5 行使用委托覆盖本地定义的方法(令牌)
如果我handles => [ qw(token) ]
在第 5 行删除代码将返回另一个错误:
在 3.pl 第 5 行对子例程“Tiger::new”进行深度递归。
那么怎么办呢?
我需要将对象 () 的标记设置为与对象Cat::Tiger
( $cat->tiger->token
) 中相同的标记,并在每次对象标记更改时同步它们。Cat
$cat-token
Cat
perl - Perl with Moo:如何调用超类的方法实现?
我有一个带有子类X
的类Y
。 X
有一个calculate()
我想Y
用一些额外的行为覆盖的方法if
,如果它失败,调用的语句X.calculate()
。在 Python 中,这将通过以下方式完成:
如何在 Perl 中使用该Moo
模块执行此操作?
perl - 角色和代码可读性
使用角色的改进(Moo::Role 或 Role::Tiny 或其他)
仅从 mixin 类显式导入函数
数量众多,包括增加的灵活性、更少的簿记(尤其是在导入大量方法的情况下)以及不覆盖现有方法。
但是一个很大的缺点是,如果您正在阅读代码并遇到提及some_roles_method()
并且想要阅读该函数,则不会立即知道该去哪里。你所能知道的是它没有在这个文件中定义。
有什么好的策略来处理吗?我是唯一一个困扰的人吗?
perl - 修饰符在服务对象下不可见
鉴于以下情况:
- 哞2.001001;
- 面包::板 0.34;
- 一个
Bread::Board
容器 Foo
具有属性str
和around
修饰符的基类forstr
- 子类
Bar
扩展Foo
问题:
- [GOOD] 从 plain 实例化对象时
Bar
,Foo::str
执行修饰符; - [BAD] 从容器服务为 实例化对象时
Bar
,Foo::str
不执行修饰符; - 在 [BAD] 发生后 [WORSE],从普通实例化
Bar
也不再有效;
代码示例:
输出:
请注意输出bar_bb
,bar_bb_setter
并且bar_plain_after_bb
不包含prefix_
字符串。
为什么?
perl - 如何使用 Moo 和 Type::Tiny 以一般方式实现“thunk”(延迟计算)?
我希望能够拥有一个具有以下特征的 Moo* 类:
- 对象的属性可以存储对对象本身的引用
- 该属性将使用类型进行类型约束,
Type::Tiny
因此引用必须是正确的类型 - 类在不可变时必须起作用,并且属性是“必需的”,即未定义的值是不可接受的,以后不能更新
例如
上面提出了一个先有鸡还是先有蛋的问题:$type
将是未定义的,因此无法通过类型约束。
中使用的模式graphql-js
是“thunking”。在 Perl 术语中:
虽然这适用于那里的特定类型,但我怎样才能拥有一个实现类似这样的参数化类型?此外,如果这可以连接到“惰性”功能以最小化存储计算值所涉及的代码,它将更有帮助。
perl - 如何处理:Moo::Role 的 `before` 修饰符由于循环导入而默默跳过?
使用Moo::Role
,我发现循环导入正在默默地阻止执行before
我的方法的修饰符。
我有Moo::Role
一个MyRole.pm
:
...消费者MyA.pm
:
..还有另一个在MyB.pm
:
当我运行这个script.pl
:
...我得到The code should have died before this point at MyB.pm line 4.
但希望看到This has been correctly executed at MyRole.pm line 5
。
我认为这个问题是由循环进口引起的。use
如果我将语句的顺序切换为 inscript.pl
或将use MyB;
in更改MyRole.pm
为require
within ,它就会消失the_method
。
这种行为是预期的吗?如果是这样,在无法避免循环导入的情况下,最好的处理方法是什么?
我可以解决这个问题,但感觉很容易意外触发(特别是因为它会导致before
通常包含检查代码的函数被静默跳过)。
(我使用的是 Moo 版本 2.003004。显然这里的use MyB;
inMyRole.pm
是多余的,但只有在我简化了这个 repro 示例的代码之后。)
php - Image_moo & CodeIgniter 框架不会生成缩略图
尝试使用 Image_moo 和 CodeIgniter 框架生成缩略图。Image_moo 不会输出任何错误,但是永远不会生成缩略图。
目录结构应用程序 - 控制器/Admin.php ... - 库/ Image_moo.php ... - 模型/ Admin_photos_model.php
管理员.php
Admin_photos_model
尝试生成缩略图,我按系列分隔照片。如果该系列尚未开始,则会创建一个新目录。理想情况下,上传带有“nature”系列的“waterfall.jpg”会产生:
任何帮助,将不胜感激。
perl - 如何在构造对象时不执行触发器
我有这个代码:
它返回:
这是 Moo 中触发器的默认记录行为。
如果属性是通过构造函数设置的,如何禁用触发器执行?
当然我可以这样做:
并得到:
所以它有效,但是......感觉不对;)。
perl - 为什么 Moo 的 builder 方法只能访问其他一些属性?
我期待一个构建器方法可以访问调用者提供的所有其他属性。但它似乎只能访问那些名字按字母顺序小于当前属性的人。例如,为什么这里的建造者可以看到但b
看不到的价值?(“a”和“c”都存在于最终对象中)a
c
代码:
输出: