在“我的最后一个问题 @Borodin”中,我的问题是:
您应该从移除现代::Perl和命名空间::扫描开始。应该避免以务实的方式运行的模块。
我有点困惑,因为:
namespace::autoclean。使用命名空间::autoclean只是良好的代码卫生,因为它在包的编译周期结束时从类的名称空间中删除导入的符号,包括Moose关键字。一旦类构建完毕,就不需要这些关键字了。(这比在包的末尾不放驼鹿要好)。
在书中,Intermediate perl也推荐使用namespace::autoclean。
是的,我使用的是autoclean -- sweep模块--因为再次使用从博士那里
编写此杂注是为了解决出色的命名空间::auto洁净的一些问题。特别是,命名空间::autoclean将删除通过重载安装的特殊符号,因此不能在重载Perl运算符的对象上使用命名空间::auto洁净。 ... 在大多数情况下,命名空间::扫描应该作为命名空间::auto洁净的插入替代。发布时,除了自己的测试之外,此实用程序还通过了所有命名空间::auto洁净的测试。
因为我是perl初学者,所以我真的很困惑。对我来说,当我读到:这个模块解决了另一个模块的一些问题--意思是:使用这个模块。
手册(从哪里我应该学习)说“使用它”和专家从堆叠溢出远程:不要使用它。
所以,有谁能解释一下:
namespace::sweep是正确的,还是我应该使用namespace::autoclean,还是不使用?用于“现代派”。当然,我可能不太明白到底是怎么回事。我所知道的,(再一次是从博士那里)
这就启用了严格和警告的实用程序,以及Perl 5.10中可用的所有特性。它还支持perldoc中记录的C3方法解析顺序,并加载IO::File和IO::Handle,以便您可以调用文件句柄上的方法。今后,它可能包括更多的核心模块和实用程序。
当然,不要对mro有深刻的理解,只是认为在多重继承的情况下,这是“致命的死亡钻石”问题的答案。
到今天为止,我真的很高兴,因为它是我所需要的实用主义的缩写:
use strict;
use warnings;
use feature 'say';那么,什么是“现代::Perl”(和其他类似的cpanm模块)的“状态”呢?允许使用还是不允许?
发布于 2014-03-24 08:41:01
关于名称空间的问题::扫描:
首先,请注意名称空间::扫描解决的实际问题。
特别是,命名空间::autoclean将删除通过重载安装的特殊符号,因此不能在重载Perl运算符的对象上使用命名空间::auto洁净。
这意味着,如果您的类有重载运算符,那么如果您同时使用use namespace::autoclean,它们将无法工作。但只有当您use overload时才会出现此问题。除此之外,命名空间::auto洁净就足够了。
其次,它说名称空间::扫描可以被使用,而不是名称空间::auto洁净:
在大多数情况下,命名空间::扫描应该作为命名空间::auto洁净的插入替代。发布时,除了自己的测试之外,此实用程序还通过了所有命名空间::auto洁净的测试。
因此,要回答您的问题,“使用命名空间::扫描是正确的,还是我应该使用命名空间::autoclean它们中的任何一个?”
use overload,那么使用命名空间::auto洁净就没有问题,所以您可以在本例中使用它。https://stackoverflow.com/questions/22599829
复制相似问题