Perl 中的默认自动加载


Perl 提供了一项任何其他编程语言中没有的功能:一个默认子例程。这意味着,如果您定义了一个名为  AUTOLOAD() 的函数,那么对未定义子例程的任何调用都将自动调用 AUTOLOAD() 函数。缺少子例程的名称可作为 $AUTOLOAD 在此子例程中访问。

默认自动加载功能对于错误处理非常有用。以下是如何实现 AUTOLOAD 的一个示例,您可以通过自己的方式实现此函数。

sub AUTOLOAD {
   my $self = shift;
   my $type = ref ($self) || croak "$self is not an object";
   my $field = $AUTOLOAD;
   $field =~ s/.*://;
   unless (exists $self->{$field}) {
      croak "$field does not exist in object/class $type";
   }
   if (@_) {
      return $self->($name) = shift;
   } else {
      return $self->($name);
   }
}

更新于: 02-Dec-2019

121 浏览

开启您的 职业生涯

完成课程,获得认证

开始吧
广告