0
レイヤオブジェクトの配列であるレイヤー というインスタンスオブジェクトがあります。クラスオブジェクトのコピー
私は次のことをしてみてください、と私はクラスメソッドをダンプしようとしているというエラーが出ます:
@best_copy = Marshal.load(Marshal.dump(@layers))
TypeError: no marshal_dump is defined for class Method
attr_accessorを保存しようとしないように、私はそれを作るにはどうすればよいです、 しかし、実際のオブジェクトですか?
ああ、私はちょっと気付きました。私は関数ポインタを持っています。 attr_accessor:fptr。これに代わる方法はありますか?関数のポインタを削除するか、オブジェクトの個々の部分を保存するだけです。 – Flethuseo
@ user487980:一般的なケースでは代替手段はありません。メソッドをマーシャリングすることはできません。インスタンス変数内の実行可能コードを持つオブジェクトは、標準のアーカイブライブラリとはうまく対話しません。最も近い近似は、ターゲット(メソッドを実装するオブジェクト)とセレクタ(メソッドを呼び出すためのメッセージ)を格納するココアのようなシステムです。たとえば、 '@fptr = foo.method(:bar)'を実行している場合は、代わりに '@target = foo;を実行します。 @selector =:bar'。 – Chuck