機能するようにパラメータとしてオブジェクトメソッドの参照を渡す:perlのは、私がこのような何かをしようとしている
- ソースファイル1
my $queue = Thread::Queue->new();
MyModules::populateQueue(<pass $queue->enqueue method reference);
...
- パッケージファイル
package MyModules
sub populateQueue {
my $enqueue = $_[0];
my $item = <find item to add to queue>;
$enqueue->($item);
。 ..
最初に、私はThread :: Queueに "bless"を追加できません
どのようにする方法を渡すためにMyModules::populateQueue(\&queue->enqueue) <-- same failure as above
任意のアイデア、未定義のサブルーチンで>($アイテム) -
my $enqueueRef = $queue->can('enqueue');
MyModules::populateQueue(\&enqueueRef); <--- fails in the package at line
$エンキュー:
は、私はstackoverflowので見つかった提案のカップルを試してみましたその関数で使用できる関数へのパラメータとしてのオブジェクト?
:バインドされたメソッドを渡すために
、正解は、メソッド呼び出しをラップ匿名サブ使用することである 'サブ{$ queue->エンキューを。 } ' –
CPANには' curry'モジュールもあります。 – simbabque