私はGroovyでゲームを開発しています。私はクロージャを広範囲に使って、より洗練されたアーキテクチャにすることを考えています。 たとえば、状態の影響(中毒など)を実装する場合、プレイヤーのオブジェクトには、各ゲームターンを実行するためのクロージャのリストがあります。これらは、ゲームを保存するときにシリアル化する必要があります。groovyでクロージャをシリアライズ
通常、直列化が必要なオブジェクトにクロージャを格納するのは良い考えですか?または、より伝統的なアーキテクチャ(例えば、StatusEffectオブジェクトのリストを格納する)を選択する必要がありますか?
直列化クロージャが完全に可能である:-)各ゲームターンを実行するためのクロージャのリストを持つ
は
ありがとうございました。私はJava逆コンパイラを使ってGroovyが内部的にクロージャを実装していることを知り、それをシリアライズしても何の問題もないことを確認しました。それらはdoCallメソッドを持つクラスを自動的に生成し、クロージャーで使用されるすべての外部変数への参照を格納します。唯一の問題は、使用されていなくても常に 'this'への参照を持ちますが、あなたが言ったように、1.8.5 – ramirami