问题标签 [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 回答
236 浏览

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.

0 投票
1 回答
516 浏览

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-tokenCat

0 投票
2 回答
724 浏览

perl - Perl with Moo:如何调用超类的方法实现?

我有一个带有子类X的类YX有一个calculate()我想Y用一些额外的行为覆盖的方法if,如果它失败,调用的语句X.calculate()。在 Python 中,这将通过以下方式完成:

如何在 Perl 中使用该Moo模块执行此操作?

0 投票
1 回答
87 浏览

perl - 角色和代码可读性

使用角色的改进(Moo::Role 或 Role::Tiny 或其他)

仅从 mixin 类显式导入函数

数量众多,包括增加的灵活性、更少的簿记(尤其是在导入大量方法的情况下)以及不覆盖现有方法。

但是一个很大的缺点是,如果您正在阅读代码并遇到提及some_roles_method()并且想要阅读该函数,则不会立即知道该去哪里。你所能知道的是它没有在这个文件中定义。

有什么好的策略来处理吗?我是唯一一个困扰的人吗?

0 投票
1 回答
67 浏览

perl - 修饰符在服务对象下不可见

鉴于以下情况:

  • 哞2.001001;
  • 面包::板 0.34;
  • 一个Bread::Board容器
  • Foo具有属性straround修饰符的基类forstr
  • 子类Bar扩展Foo

问题:

  • [GOOD] 从 plain 实例化对象时BarFoo::str执行修饰符;
  • [BAD] 从容器服务为 实例化对象时BarFoo::str不执行修饰符;
  • 在 [BAD] 发生后 [WORSE],从普通实例化Bar也不再有效;

代码示例:

输出:

请注意输出bar_bbbar_bb_setter并且bar_plain_after_bb不包含prefix_字符串。

为什么?

0 投票
1 回答
167 浏览

perl - 如何使用 Moo 和 Type::Tiny 以一般方式实现“thunk”(延迟计算)?

我希望能够拥有一个具有以下特征的 Moo* 类:

  • 对象的属性可以存储对对象本身的引用
  • 该属性将使用类型进行类型约束,Type::Tiny因此引用必须是正确的类型
  • 类在不可变时必须起作用,并且属性是“必需的”,即未定义的值是不可接受的,以后不能更新

例如

上面提出了一个先有鸡还是先有蛋的问题:$type将是未定义的,因此无法通过类型约束。

中使用的模式graphql-js“thunking”。在 Perl 术语中:

虽然这适用于那里的特定类型,但我怎样才能拥有一个实现类似这样的参数化类型?此外,如果这可以连接到“惰性”功能以最小化存储计算值所涉及的代码,它将更有帮助。

0 投票
1 回答
141 浏览

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.pmrequirewithin ,它就会消失the_method

这种行为是预期的吗?如果是这样,在无法避免循环导入的情况下,最好的处理方法是什么?

我可以解决这个问题,但感觉很容易意外触发(特别是因为它会导致before通常包含检查代码的函数被静默跳过)。

(我使用的是 Moo 版本 2.003004。显然这里的use MyB;inMyRole.pm是多余的,但只有在我简化了这个 repro 示例的代码之后。)

0 投票
1 回答
188 浏览

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”会产生:

任何帮助,将不胜感激。

0 投票
2 回答
221 浏览

perl - 如何在构造对象时不执行触发器

我有这个代码:

它返回:

这是 Moo 中触发器的默认记录行为。

如果属性是通过构造函数设置的,如何禁用触发器执行?

当然我可以这样做:

并得到:

所以它有效,但是......感觉不对;)。

0 投票
1 回答
369 浏览

perl - 为什么 Moo 的 builder 方法只能访问其他一些属性?

我期待一个构建器方法可以访问调用者提供的所有其他属性。但它似乎只能访问那些名字按字母顺序小于当前属性的人。例如,为什么这里的建造者可以看到但b看不到的价值?(“a”和“c”都存在于最终对象中)ac

代码:

输出: