【问题标题】:Perl - OOP/Moose - method signaturesPerl - OOP/Moose - 方法签名
【发布时间】:2013-10-14 14:05:46
【问题描述】:

我喜欢这样在 Perl 中编写面向对象的代码:

use MooseX::Declare;
use Method::Signatures::Modifiers;
use v5.14.2;


class Talker
{
     method talk (Str $text) {
         $self=>say $text;

     }

     my $talk_object = Talker->new();
     $talk_object->talk('Hello!');
}

不幸的是,这很慢,我找不到任何与其等效的鼠标或 Moo。 可惜 Perl 没有 PyPy 之类的东西。

有人知道如何使用较轻的实现来归档相同的内容吗?

【问题讨论】:

  • 到底慢怎么办?如果您谈论的是使用 Moose 对编译时的影响,最好使用某种持久性代码来避免重复编译。
  • 是的,这是编译时间。至少,就我现在所看到的而言。试图避免重复编译在这里不是一个很好的技巧......:/。将看看Moops。不幸的是,由于这些混乱,OOP 在 Perl 中的品味仍然很差。

标签: performance perl oop moose method-signature


【解决方案1】:

实验性的Moops 模块是另一个语法扩展,其工作原理非常相似。它的灵感来自 MooseX::Declare(但速度更快)以及试图将此类语法引入核心 perl 的 p5-mop 项目。

您的示例无需进行重大更改即可翻译。如果要指定MOP后端,可以声明class Foo using Moose之类的类,但默认为Moo,比Moose简单。

【讨论】:

  • Moops 绝对值得一看。对我来说,似乎在重量和便利性之间取得了合理的平衡——刚开始在一些小型 cron 驱动的脚本中尝试它。启动时间对我来说似乎还可以。不过确实需要最新(5.14+)版本的 Perl。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2011-04-08
相关资源
最近更新 更多