【问题标题】:Return object handle from a subroutine从子例程返回对象句柄
【发布时间】:2014-07-11 01:02:36
【问题描述】:

我想知道是否可以从 Perl 程序中的子例程返回对象句柄。 我将使用使用MAIL::IMAPClient的程序中的特定示例

创建客户端对象句柄

my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";

我想改为从子例程创建此对象句柄

my $client = &create_client_object;

sub create_client_object {

  my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";

  return $client;
}

如果可能,这样做的正确方法是什么?

【问题讨论】:

  • 是的,这本质上是 Java 静态工厂方法的 Perl 等价物。注意,调用子程序时不要使用&。而是使用my $client = create_client_object();

标签: perl oop subroutine


【解决方案1】:

是的,效果很好。除了@Miller 的评论,我还建议您将$socket$user$pass 作为参数传递给您的函数,而不是从上下文中使用它们:

my $client = create_client_object($socket, $user, $pass);

sub create_client_object {
  my ($socket, $user, $pass) = @_;

  my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";

  return $client;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2020-11-27
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多