1
誰でもPOEセッション内で変数スコープがどのように機能するか説明できますか?他のセッションに影響を与えることなく、セッション内で状態を渡す適切な方法は何ですか?POEセッションで変数スコープはどのように機能しますか?
おかげ ジョシュ
誰でもPOEセッション内で変数スコープがどのように機能するか説明できますか?他のセッションに影響を与えることなく、セッション内で状態を渡す適切な方法は何ですか?POEセッションで変数スコープはどのように機能しますか?
おかげ ジョシュ
スコープはPOEの影響を受けません。
POEのヒープ($_[HEAP]
からアクセス可能)を使用して、さまざまなハンドラ間でデータを渡すことができます。
According to the docsでは、デフォルトでセッション間でヒープが区別されますが、異なるセッションでヒープを共有するようにオーバーライドすることは可能です。
sub my_state_handler {
$_[HEAP]{some_data} = 'foo';
$_[KERNEL]->yield('another_handler');
}
sub another_handler {
print $_[HEAP]{some_data}, "\n"; # prints "foo\n"
}
セッションを作成するときに、ヒープに新しいハッシュが使用されていると言っています。セッションを作成するときに手動でヒープを指定することができます。http://search.cpan.org/perldoc?POE::Session#heap_=>_ANYTHING セッションのヒープまたは配列などに既存のハッシュを使用できます。 – Hinrik