【问题标题】:Is it ever necessary to end a (perl) Moose class with 1;?是否有必要以 1; 结束(perl)Moose 类?
【发布时间】:2013-05-10 13:30:08
【问题描述】:

我是 Moose 的新手,Moose manual on classes 似乎是一个有效的类:

package Person;
use namespace::autoclean;
use Moose;

__PACKAGE__->meta->make_immutable;

但是终端“我回来了”1; ???

我可以找到许多确实1; 结尾的 Moose 类示例,但这是无用的还是有时需要(以及为什么)?由于我还可以找到许多带有use strict;use warnings; 的Moose 类的示例,这绝对是多余的,看来一些旧的perl 习惯很难改掉。

【问题讨论】:

    标签: perl moose


    【解决方案1】:

    不,$meta->make_immutable 保证返回一个真值。

    此方法将创建一个不可变的转换器,并使用它使类及其元类对象不可变,并返回 true(除了其真实性,您不应依赖此值的细节)。

    【讨论】:

    • 我认为这也适用于no moose;
    • 不,no moose; 不会产生任何代码。这意味着BEGIN { require moose; moose->unimport; }
    • 那么Moose类模块在这方面有什么特别之处吗?我可以看到,正常的结构往往会导致这种事情发生而没有明确地这样做,但仍然需要一个终端真正的返回语句?如果这不是“保证”,那么终端 1; 确保此返回状态似乎是合理的事情。
    • 是的,他们仍然需要返回 true。您可以通过在末尾放置 0; 来测试它。
    猜你喜欢
    • 2011-07-09
    • 2015-08-28
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多