問題タブ [deep-copy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 完全に基本的なJavascriptリファレンスの質問
Javascriptコンソールでは次のようになります。
収量:
Object foo=[1]
aの各キーの各配列のbの値でコピーを作成したいと思います。もっと簡単な方法はありますか?
c# - ディープコピーASP.NETGridView
ピアのグループ用のカスタムコントロールを作成していて、障害が発生しています。コントロールの目的は、ネスト、並べ替えなどを使用してグリッドを実装する簡単な方法を提供することです。
ネストを作成するために、残りの子の青写真として機能する子GridViewがあります。開発者が希望どおりに構成できるようにすると、カスタムコントロールが多数の同一のコピーを作成します。
ここでの私の問題は、子グリッドを完全にコピーできないことです。MemberWiseClone()は機能していないようで、GridViewはシリアル化できません。
私の現在の解決策は、必要になることがわかっているフィールド(ID、CssClassなど)のリストを手動でコピーすることですが、それは明らかに不十分であり、EventHandlerにも触れません。
GridViewをディープコピーする良い方法はありますか-または-別の方法を使用して説明した機能を提供しますか?
arrays - Scalaの2D配列のディープコピー?
Scala で 2D 配列のディープ コピーを行うにはどうすればよいですか?
例えば
val b に a の値をコピーさせたいのですが、同じ配列を指さないようにします。
python - シンプルな Python オブジェクトをディープコピーする
__deepcopy__
メソッドを定義するオブジェクトがあります。指定されたメソッドではなく、クラスのオブジェクトがコピーされるデフォルトの方法でディープコピーする関数が欲しいですobject
。
どうすればそれができますか?私はそれをコーディングしようとすることができると思いますが、おそらく私が考えていない多くの「落とし穴」があるでしょう.
私がそうしているのは、__deepcopy__
メソッドを実装するオブジェクトクラスがあり、そのメソッドが何らかの条件をチェックし、場合によっては特定の方法でオブジェクトをディープコピーし、他の場合にはディープコピーするためです。デフォルトobject
の方法。
python - カスタムタイプに対してPythonのcopy.deepcopy()を呼び出す問題をデバッグするにはどうすればよいですか?
私のコードでは、を使用してクラスのインスタンスのコピーを取得しようとしていますcopy.deepcopy
。問題は、状況によっては次のエラーでエラーが発生することです。
多くの調査の結果、次のコードを使用してエラーを再現できることがわかりました。
問題は、ある時点でNotImplementedType
ビルトインをコピーしようとしていることのようです。問題は、なぜこれを行うのかということです。__deepcopy__
私はクラスでオーバーライドしていませんし、それが常に発生するわけではありません。このタイプのコピーを作成するリクエストがどこから来たのかを追跡するためのヒントはありますか?
copy
これが起こっていることを確認するために、モジュール自体にデバッグコードをいくつか入れましたが、問題が発生するポイントは再帰スタックのはるか下にあり、私が見ているものを大いに活用することは非常に困難です。
apache-flex - Flex: FileReference の DeepCopy
私のプロジェクトでは、ユーザーが FileReference クラスを使用して画像を選択できるようにしています。次に、load() 関数を使用して、これらの画像を .data プロパティに読み込みます。この後、いくつかのローカル操作を実行し、それらをサーバーに送信します。
私がやりたいことは、選択した FileReferences をもう一度反復処理し、それらを .data プロパティにロードし、別の操作を実行して、もう一度サーバーに送信できるようにすることです。ユーザーが呼び出したイベントからこれを行うことができるはずであることはわかっていますが、それはここでは問題ではありません。
問題は、FileReference が初めてロードされると、それをアンロードすることができず、メモリ内のすべての画像のデータを保持できないことです。これらは巨大であるためです。
したがって、私ができることは 1 つだけだと思います。それは、FileReference で DeepCopy を実行することです...次に、最初のバージョンをロードし、それを廃棄して、2 回目の「実行」にコピーを使用することができます。
ObjectUtil.copy を使用しようとしましたが、たとえばコピーの .name プロパティにアクセスすると、次のように失敗します。
flash.net::FileReference/get name() で
関連するスニペット:
FileReference クラスの一部の保護されたプロパティがコピーを防止するというのは本当ですか? もしそうなら、何とかこれを回避できますか?または、全体的な問題に対する他の解決策はありますか?
ヒントやアイデアをいただければ幸いです。
c# - ラムダ式を含むオブジェクトをディープコピーするにはどうすればよいですか?
ロックマンのゲームについては、また私です。オブジェクトをデータ駆動できるように、コンポーネントシステムに切り替えました。うまくいきますが、問題が発生しました。
私のオブジェクトには、入力ファイルで指定された状態があります。これらの状態には、他の状態に移行するためのトリガーがあります。状態変化の条件も入力ファイルにあり、ラムダ式に解析されます。次に、オブジェクトをディープコピーする必要があります。また、元のメンバーではなく、コピーのメンバーを参照するラムダが必要です。オリジナルはプログラムのロード時にファイルからロードされますが、その後いつでもコピーできます(発射物が発射されたと考えてください)。
大幅に簡略化されたコードを次に示します。
それだけではありません。トリガーによって実際に状態が変化し、新しい状態のイニシャライザーがそのアクションを呼び出しますが、ここでは簡略化しました。
したがって、問題は、このコンポーネントをディープコピーするとき、またはとにかくしようとすると、ラムダが元のコンポーネントではなく、コピーのDependentComponentのインスタンスを参照するようにする方法がわからないことです。エンティティのディープコピーが新しいDependentComponentを取得していることをすでに確認しましたが、ラムダは元のコンポーネントを参照しているだけです。デリゲートは、作成されると基本的に特定のインスタンスにロックされますか?新しいものを作成する必要がありますか?ファイルからエンティティ全体を再度ロードする必要はありません。
linq - Enumerable.Repeat()はディープコピーを実行しますか?
私が以下を使用する場合:
リストの2番目の要素は、最初の要素の深いコピーになりますか?
注: myCustomObjectは任意のオブジェクトにすることができます
編集:カスタムオブジェクトを処理するときにEnumerable.Repeatを使用する可能性についても教えてください。
ありがとう
c# - C# のバイナリ シリアル化で親オブジェクトを除外する
C# でのバイナリ シリアル化について質問があります
クラス B のオブジェクトを (もちろんグラフ内のすべてのサブオブジェクトと共に) ディープ クローンできるようにする必要があります。バイナリシリアル化を使用してこれを実装したいと思います。それが最善の方法であるかどうかの議論は、この質問の文脈では無関係です。
私はこのクラス構造を持っているとしましょう:
バイナリ シリアライゼーションを使用したディープ クローン作成用のヘルパー クラス (このメソッド コードはネット上のどこかから取得しました。TBH がどこにあるかはよく覚えていませんが、問題ないようです)
したがって、アプリのある時点で、次のコードをヒットしました。
問題は、デバッガーが、クラス A がシリアライズ可能としてマークされていないことを嘆いていることです。
しかし、私はAをシリアライズしたくありません.Bをシリアライズしたいのですが、それはサブオブジェクトCです.
オブジェクトグラフですべて相互接続されているため、親オブジェクト A もシリアル化しようとしていると思います。しかし、この時点でシリアル化から除外する方法はありますか?