在Perl OOP,没有任何官方的建议,在构造函数中初始化?(In Perl OOP, is the

2019-11-03 03:22发布

在Perl面向对象编程,有没有在“新”的构造分离或包含初始化的任何官方的[1]的建议?

我正在寻找Perl的最佳做法或类似提法。

例如是有分割或以下的组合形式的正式推荐:

sub new {
   my ( $obj_or_class ) = @_;

   my $class = ( ref $obj_or_class ) ? ref $obj_or_class : $obj_or_class;
   my $self = bless {}, $class;
   return $self;
} ## end sub new

sub init {
   my ( $self, $arg ) = @_;
      foreach my $key (@VALID_KEYS) {
       if ( exists $arg->{$key} ) {
           $self->{$key} = $arg->{$key};
       }
   }
   return;
} ## end sub _init

[1]我知道“官方” Perl社区中是一个非常松散的概念。

Answer 1:

最新的Word是不是推出自己的对象系统,而是使用Moose或它的衍生物中的一种。

Moose将自动为您提供一个构造函数,你可以在每场的基础上定义的初始化。



Answer 2:

基本上,一个构造函数返回一个幸福的对象和方法在该对象上操作。 一个简单的方法来告诉是看第一个参数。 难道名为$class$self

这是常见的做法来调用作用的构造函数子程序new 。 这很容易弄明白。 此外,这是普遍的做法是在构造函数先在自己的包装方法之前。

在实际的Perl,你什么都没有强制执行的任何现象。 我最喜欢的是由内而外的类 ,因为你不能使用类作为参考欺骗的很受欢迎。 这是Perl的答案私有方法。 对我来说,它使编程和调试是不可能的事,和维护。

当然,最新的方法是不推出自己的,而是利用穆斯,或鼠标,或许多衍生物之一。 驼鹿。 你甚至可以使用类::结构它不像其他所有模块是一个标准的Perl模块。



文章来源: In Perl OOP, is there any official recommendations on initialisation within the constructor?
标签: perl oop