小编Ple*_*xus的帖子

将函数指针作为散列的一部分,perl

该脚本运行使得USER定义了一些功能:

sub userFunction
{
 my ($msg, $id) = @ARG;
 # do things
}
Run Code Online (Sandbox Code Playgroud)

这个函数,$ func与一个特定的消息名称$ msg一起传递到我的类中,并存储为{_Handles}中的$ msg/$ userFunc对:

sub new
{
  my ($class, ...) = @_;
  my $self = {};
  $self->{_Handles} = {};
  .
  . 
  .
}
Run Code Online (Sandbox Code Playgroud)

然后我添加一个消息处理程序:

$Class->AddMsgHandler($msgName1, \&userFunction);
sub AddMsgHandler
{ 
  my ($self, $msg, $func) = @ARG;
  my $funcPtr = $func->();
  $self->{_Handles}{'msg'} = $msg;
  $self->{_Handles}{$msg}{'funcPtr'} = $funcPtr;
}
Run Code Online (Sandbox Code Playgroud)

目的是通过设备无线传输我的消息; 另一台设备将收到此消息.假设设备在另一个函数中收到消息,我试图在特定的$ id上调用用户定义的函数,如下所示:

sub Receive
{
 .
 .
 .
 my $funcPtr = $self->{_Handles}{$msg}{'funcPtr'};
 $funcPtr->($msg, $self->{_devices}{$id});
} 
Run Code Online (Sandbox Code Playgroud)

不知怎的,没有回应.也许我误用了函数指针?

perl pointers class

1
推荐指数
1
解决办法
308
查看次数

标签 统计

class ×1

perl ×1

pointers ×1