問題タブ [shallow-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.

0 投票する
8 に答える
14372 参照

java - clone()はJavaの浅いコピーですか?

clone()Javaでは浅いコピーですか?

最終的に、これはObject(最上位クラス)のclone()メソッドに到達します。このメソッドは、オブジェクトと同じクラスの新しいインスタンスを作成し、すべてのフィールドを新しいインスタンスにコピーします(「浅いコピー」)。

私はウィキペディアからこれを読みました。

なぜ浅いコピーなのかわかりません。clone()すべてのフィールドで新しいインスタンスを作成します。これは単なる深いコピーですか?混乱している。説明が必要です。

0 投票する
4 に答える
3329 参照

c# - 不変オブジェクトの浅いコピーと深いコピー

おはよう、昼も夜も、

特定のクラスを不変クラスとして実装し、プライベート/内部フィールドを公開するメソッドやプロパティを持たない場合、浅いコピーは悪い習慣ですか、インスタンス化する必要があるオブジェクトがはるかに少ないため、問題なく実行できますか?

どうもありがとうございました。

0 投票する
2 に答える
231 参照

macos - iPhone Object C Arrays と Deep and Pointer Copy に関する基本的な質問

私はiPhone / Macスペースに不慣れで、これはおそらくかなり基本的な質問です。いくつかの検索を行いましたが、直接的な答えは見つかりませんでした.

追加時に配列/可変配列の addObject メソッドが浅い (ポインターのみ) または深い (オブジェクトのコピー) を行うかどうかを知りたいです。

  1. 割り当てられた可変配列
  2. ある種のinitで割り当てられたNSString
  3. 可変配列に文字列を addObject します
  4. 次に、NSString を解放します

これが適切な方法である場合、addObject が NSString のディープ コピーを行うと想定されます。これが可変配列でメモリ管理を行う適切な方法であることを確認するだけです...

0 投票する
5 に答える
33103 参照

java - 浅く等しいことと深く等しいことの違いは何ですか?これはキャッシングにどのように適用されますか?

私のメモで次のことを見つけましたが、私はそれを理解することができません:

プリミティブ型ラッパークラスは、限られた数の値のキャッシュを実装します。
これにより、限られた数の深く等しいラッパーオブジェクトも浅く等しくなることが保証されo1.equals( o2 )ますo1 == o2
たとえば、new Integer( 0 ) == new Integer( 0 )
一般に、これは常に機能するとは限りません。
たとえば、new Integer(666)== new Integer(666)
は成り立たない場合があります。
キャッシュの理由は、メモリを節約するためです。
一般に、キャッシュは「小さな」プリミティブ値に対して機能します。

これが何を意味するのか、または深い(.equals())と浅い(==)が等しいの違いが何であるかがわかりません。私は実際には、.equalsをオブジェクトに使用し、==を積分値に使用する必要があることを知っていますが、これの実際の理由は私をほのめかします。

浅い名前では、両方の値が同じタイプと名前であることを確認するだけで、両方の変数が同じオブジェクトを指していることを詳細に確認していると思いますか?ただし、ここでキャッシングがどのように機能するのか、なぜそれが役立つのかはわかりません。

0 投票する
3 に答える
1049 参照

java - リストの複製 - どのように行われますか?

メソッド呼び出しによって返されるリストの浅いコピーを作成したい (これは Android からの public List getScanResults () です。http://developer.android.com/reference/android/net/wifi/WifiManager.html#を参照してください) getScanResults%28%29 )。問題は、 clone() が List インターフェイスでは定義されておらず、ArrayList のような具体的なクラスでのみ定義されていることです。これ?それから私は次のようなことを考えました

anExistingList.add(getScanResults());

しかし、 getScanResults() は、返すものが何もない場合、空のリストではなく null を返すように見えるため、これもオプションではありません。私が何かをするとき

getScanResults() の戻り値は、最初のコード行と 2 番目のコード行の間で変化する可能性があるため、最初に「not equals null」条件を渡し、次に 2 行目で null になる可能性がありますか、これについて間違っていますか?

では、getScanResults() の戻り値の浅いコピーを作成する方法、または目標を定式化する方法: getScanResults() から値を取得し、作業中に値が変更されないようにする方法を教えてください。

ヒントをありがとう:-) (何か間違ったことを理解しているだけだと思います)

0 投票する
1 に答える
783 参照

xml - XSLTのリテラル結果要素の浅いコピーは何ですか?

それにかんする:

リテラルの結果要素は、結果ツリーに同じ名前の要素ノードを構築するための命令として機能します。XSLTプロセッサは、スタイルシートからリテラル結果要素の浅いコピーを効果的に作成し、現在作成中の結果ツリー内の場所にある結果ツリーに挿入します。

ソース: http: //lenzconsulting.com/how-xslt-works/#literal_result_elements

彼が言うとき、彼はどういう意味The XSLT processor effectively creates a shallow copy of the literal result elementですか?

この文脈での浅いコピーとはどういう意味ですか?

0 投票する
1 に答える
778 参照

ruby - Rubyオブジェクトのクローン/コピー

概要

XMLファイルを生成するデータベースクエリからrubyスクリプトでオブジェクトを作成しています。一度に1つのXMLファイルのみが処理され、すべてのタグが汎用であるため、他のクエリを簡単に追加できるように作成しました。

問題

一度に1つのオブジェクトを作成し、次のようにリストに追加します。

しかし、棒グラフを作成したいXMLファイルを処理するたびにbar_chart、オブジェクトのデータが上書きされる原因となっている変数を再利用しています。私はこれを回避する方法を探しています。

私が試したこと

オブジェクトのコピーをリストに渡そうとしましたが、それでもデータが上書きされています。

どんな助け/アイデアも素晴らしいでしょう。ありがとう。

編集、詳細情報 これが私がXML処理を行う方法です。

0 投票する
3 に答える
6383 参照

vb.net - VB.NET、関数からの参照によって返されるオブジェクトです

これはかなり一般的な質問ですが、どこにも簡単な答えは見つかりませんでした。

VB.NET の関数内でオブジェクトをインスタンス化して返す場合、参照または値によって返されますか。IE - 次のように書いた場合、パフォーマンスについて心配する必要があります。

この関数を別の場所から呼び出した場合、ret_obj でオブジェクトをインスタンス化してから、ディープ コピーを作成して呼び出し元にコピーを返しますか、それとも単に参照を返すだけですか?