3

我正在尝试将参数传递给处理 wxPerl EVT_BUTTON 事件的 perl 子例程。我明白,当我使用:

EVT_BUTTON($frame, $button, \&onClick);

我将可以访问 $frame 和 $button 及其在onClick. 但是,我试图让子例程读取其他参数,主要是各种其他Wx::CheckBox值的值/状态。

我看到这项工作的唯一方法是使用全局变量并onClick读取它们,但我想在onClick其他地方重用,而使用全局变量是我最不喜欢的选项。

我尝试了各种方法,但都失败了,例如:

EVT_BUTTON($frame, $button, \&onClick(arg1,arg2));

我认为解决方案在于理解 Perl 参考是如何工作的,因为我们在前面传递\&onClick了指标。\&但是我在 Perl 的这方面缺乏知识......

任何帮助表示赞赏

4

1 回答 1

3

尝试这个,

EVT_BUTTON($frame, $button, sub{ onClick($arg1,$arg2) });

它引用了 anon 子程序,该子程序调用 then onClicksub,它等价于:

my $subref = sub{ onClick($arg1,$arg2) };
EVT_BUTTON($frame, $button, $subref);
于 2014-05-14T20:05:08.197 回答