問題タブ [object-identity]

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 投票する
2 に答える
7683 参照

ruby - Rubyでは、なぜinspect()はobject_id()が提供するものとは異なるある種のオブジェクトIDを出力するのですか?

このp関数を使用してオブジェクトを印刷すると、IDが付与される場合があり、付与されるものとは異なりobject_id()ます。番号が異なる理由は何ですか?

更新:0x4684abcは異なります。369718700x234255E

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

python - String concatenation in Python

Can you describe difference between two ways of string concatenation: simple __add__ operator and %s patterns? I had some investigation in this question and found %s (in form without using parentheses) a little faster.

Also another question was appeared: why result of 'hell%s' % 'o' refers to another memory region than 'hell%s' % ('o',)?

There is some code example:

Result:

P.S. I know about string interning :)

0 投票する
6 に答える
516 参照

java - JavaのJTextFieldに関する質問

設計は非常に単純ですが、自分が作成したJavaクラスを実行しているときに小さな問題が発生しました。JPanelを作成し、それに4つのJTextFieldを追加し、このJPanelにもボタンを追加しました。次に、押されているこのボタンにActionListenerを関連付けました。コードは次のようなものです。

奇妙なことに、[OK]ボタンを押して、これら4つのJTextFieldにテキストを入力しましたが、これら4つのフィールドのいずれにもテキストを入力しなかったかのようにIFブランチに分類されます。私はこれをしばらくデバッグしてきましたが、手がかりはありません。.getText()== ""が入力なしをテストするための有効な方法であるかどうかのようなヒントを誰かに教えてもらえますか?

前もって感謝します!

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

.net - ASP.NET ビューステートがシリアル化されたオブジェクトの ID を失うのはなぜですか?

短い質問:オブジェクトの同じインスタンスをビューステート内に 2 回配置すると、逆シリアル化時に 2 つのインスタンスが存在します。1 つのインスタンスだけが必要です。これはどのように行うことができますか?

冗長な説明:

次のコードを検討してください。

それが実行され、ポストバックが開始されると、「false」というメッセージが表示されます。つまり、ビューステート内に 1 つのオブジェクトを配置しましたが、2 回シリアル化されました。これは、viewstate の内容を調べることで確認できます。

相互参照オブジェクトをビューステートに配置しようとすると、各項目が個別のグラフとしてシリアル化されます。説明する:

これで、「False」と「True」というメッセージが (この順序で) 表示されます。ここでも、Viewstate を調べると、各オブジェクトが 2 回シリアル化されていることがわかります。何を与える?のソースSystem.Web.UI.StateBagを ILSpy で確認しましたが、すべての値を にプッシュするだけで、ArrayList特別なシリアル化コードもありません。したがって、viewstate をシリアル化する人 ( System.Web.UI.ObjectStateFormatter?) は、どういうわけか各オブジェクトを取得し、個別のグラフとしてシリアル化しています...なぜですか? そして、私はそれを回避できますか?

更新:これが必要な理由は、同じオブジェクトが 2 つの別々のコンポーネントによって永続化され、逆シリアル化時にそれらが同じオブジェクトを持っているかどうかを確認したいからです。(というか、どちらもオブジェクト自体のコレクションを格納しており、それらのコレクションを同期する必要があります)。

さまざまな方法でカスタム比較を実装できますが、これを任意のオブジェクトに対して実行したいので、ややこしくなります。;)

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

java - == 演算子を使用して Java の Point オブジェクトを比較できますか?

「コーディングインタビューを割る」という本からの質問を解決しているときに...疑問が生じました.質問は次のとおりです。

2 次元平面上に 2 つの正方形がある場合、これら 2 つの正方形を半分に切る線を見つけます。

解決策: 長方形の中心を通る線は、長方形を半分に切断する必要があります。したがって、2 つの正方形の中心を結ぶ線を引くと、両方が半分になります。

しかし今疑問なのは、cut メソッドの '==' 演算子で、それらが同じ正方形の点であるかどうかを確認することです。ポイントは不変ですか?? 親切に助けてください...よろしくお願いします。

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

java - Java のガベージ コレクターがオブジェクトを移動する場合、Object.hashCode と System.identityHashCode は何ですか?

Object.hashCodeこれらのメソッド (およびSystem.identityHashCode) は、オブジェクトのアドレス、またはアドレスからすばやく計算されたものを返すとよく耳にします。しかし、ガベージコレクターがオブジェクトを移動して圧縮することも確信しています。ハッシュ コードは変更できないため、これが問題になります。これは日常業務で知る必要がないことはわかっていますが、内部を理解したいと思います。それで、これがJavaでどのように実装されているか知っている人はいますか? または .NET です。おそらく似ているからです。

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

java - Morphia は update _id の代わりに新しいエンティティを保存します

非常にばかげた質問で申し訳ありません。モルフィア1.00を使用しています。いくつかのエンティティを持っています:

およびその他のフィールド、セッターとゲッター。同一のインスタンスを保存しようとしています:

私が知っているように、mongoDb は upsert コマンドを実行する必要があります (「存在する場合は更新し、存在しない場合は (単一のドキュメント) を挿入する」ことを意味します)。ただし、_id フィールドを更新するだけでなく、mongo は新しいエンティティを DB に保存します。

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

c# - オブジェクトの同等性とアイデンティティをテストするためにこのコードで使用される手法を説明してください

オブジェクトの同等性とアイデンティティをテストするためにこのコードで使用される手法を説明してください。

詳細な議論のために私にウェブリンク/本の参照を提供することができればもっと良いです。

一時オブジェクトとは何ですか?

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

python - 同等のオブジェクトを使用してセットの要素にアクセスするにはどうすればよいですか?

Pythonセットの要素と同等に比較されるオブジェクトがあるが、同じオブジェクトではない場合、セット内のオブジェクトへの参照を取得するための合理的な方法はありますか?ユースケースは、セットを使用して重複データを識別および共有することです。

例(Python 2.7):

とのa使用に関するリファレンスを取得する方法は?私は1つの方法を考えることができますが、それが実装に依存していないかどうかはわかりません。編集:これは、sに複数の要素がある場合は機能しません。交差点は非常に自然に実装されていますbsab[x for x in smaller_set if x in larger_set]

おそらく、適切な回避策は、セットではなく、各キーをそれ自体にマップするdictを使用することです。

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

c++ - Boost::Serializationのようにオブジェクトトラッキングを実装する

C ++でオブジェクトのグラフに「クローン」関数を実装していますが、問題の一部は、同じオブジェクトへのポインターが2つある場合に、それが2回クローンされないようにすることです。これmap<void*, void*>は、元のオブジェクトをキーとして保持し、複製されたバージョンを値として保持することによって行いました。オブジェクトのクローンを作成するときは、テンプレート関数を使用して、オブジェクトがマップにあるかどうかを確認します。ある場合は、で返しますstatic_cast<T*>。そうでない場合は、クローンを作成して元のオブジェクトを保存し、暗黙的にマップに変換してクローンを作成しvoid*ます。

このスキームの問題は、オブジェクトが2つの場所で異なるタイプ(たとえば、インターフェイスと具象タイプ)によって参照されている場合、キャスト先void*が同じ値にならない可能性があることです。これは、オブジェクトが2回複製されることを意味します。

私はこれに対する既存の解​​決策をウェブで調べ、Boost.Serializationが同じ問題に対処しなければならないことに気づきました。しかし、そのソースを調べた後、オブジェクトへのポインターを実際に追跡する部分を見つけることができませんでした。

誰かがうまくいくデザインを提案することによって、またはこれを行うBoostコードの部分を指摘することによって助けることができますか?