問題タブ [cyclic-reference]

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

neo4j - Neo4jで相互関係を削除する最速の方法は?

「関連用語」の関係が重複しているシソーラスをインポートしたため、A と B が関連している場合、グラフには (B)-[:RT]->(A) だけでなく (A)-[:RT]->(B) も含まれます。 )

これをクリーンアップするために、Neo4j ではグラフを両方向にトラバースできるため、

これが最速の方法ですか?回答 : いいえ、簡略化できるためです。

に編集

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

python - django テーブルに挿入する方法 相互参照

私はdjango 1.6を使用しており、2つのモデルが次のように相互に参照しています:

循環外部キーを使用する理由は、データの整合性のためです。アドレスは正確に 1 人のユーザーに割り当てられる可能性があり、ユーザーは少なくとも 1 つのアドレスを持っている必要があるためです。はい、これがなくても生きていけることはわかっていますが、むしろそうはなりません。

外部キーで PostgreSQL を使用しており、DEFERRABLE INITIALLY DEFERREDトランザクションを使用してそれらのテーブルにデータを挿入したいと考えています。ただし、 を使用しようとするとtransaction.atomic():、ビュー内で期待どおりに動作しません。

これが私がやっていることです:

しかし、私IntegrityErrorは最初に電話をかけ続けますaddr.save()

私が間違っていることは何か提案はありますか? そのためのより良い方法はありますか?

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

scala - 適切な FP プラクティスを使用して Scala で機能するように、可変性と循環依存関係を備えたドメイン モデルをリファクタリングしますか?

私は OO のバックグラウンド (C#、javascript) から来ており、Scala は FP への最初の進出です。

私のバックグラウンドのために、ドメインの問題にうまく適合し、コードの最小限の可変性などの FP の優れたプラクティスにも準拠するドメイン モデルを実現するのに苦労しています。

最初に、現在の私のドメインの問題について簡単に説明します。

  • 主なドメイン オブジェクトは次のとおりです。Event, Tournament, User, and Team
  • Teamsで構成されていますUsers
  • との両方TeamsUsers参加できますTournamentsEvent
  • EventsUsersとからなるTournaments
  • とのスコア、統計、およびランキングはTeams、主要な機能になりUsersます。TournamentsEvents

この問題の説明を考えると、ドメインに関する私の最初のアイデアは、双方向の循環関係が標準であるオブジェクトを作成することです。これは、グラフに似たものです。私の考えでは、特定のオブジェクトに関連付けられているすべてのオブジェクトにアクセスできると、データのビューをプログラミングしたり操作したりするための最も簡単な方法が提供されるということです。

しかし、FP のベスト プラクティスをさらに掘り下げていくうちに、私の思考プロセスが FP の原則と相容れないことがわかりました。循環参照は嫌われており、不変オブジェクトではほとんど不可能のようです。

これを考えると、ドメイン内の「現実世界のオブジェクト」の常識的な組織を維持しながら、適切な FP の要件を満たすようにドメインをリファクタリングする方法に苦労しています。

私が検討したいくつかのオプション

  • lazy val と by-name 参照を使用してください-- これに関する私の不満は、ドメインが自明ではなくなると、管理不能になるように思われることです
  • 代わりに一方向の関係を使用してください-- この方法では、一部のドメイン オブジェクトを、他のオブジェクトを介してのみアクセスできる 2 番目のクラス オブジェクトとして強制的に格下げする必要があります。どのように選択しますか?それらはすべて私にとって等しく重要に思えます。さらに、これには、2 番目のクラス オブジェクトの単純なリストを取得するためだけに、「粒度に反して」クエリを作成する必要があります。
  • インダイレクションを使用し、リレーションシップの識別子のリストを保存します。これにより、循環的な依存関係が削除されますが、リレーションシップの更新をエミュレートするために追加のビジネス ロジックを記述し、関係を取得するために DB に余分なトリップを行う必要があるため、複雑さが増します。

そのため、実装または元のモデルのいずれかを変更して、必要と思われる結合を達成する方法に苦労していますが、Scala の「正しい方法」で。どうすればこの問題にアプローチできますか?

TL;DR -- ドメインがそのコアで双方向アクセスと可変性を要求しているように見える場合、適切な FP プラクティスを使用してドメインをモデル化するにはどうすればよいですか?

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

c++ - shared_ptrにおけるweak_ptrの役割

weak_ptr の役割を除いて、shared_ptr がどのように機能するかを理解しています。参照カウントがゼロでない場合に循環参照を検出することは理解していますが、これを超えると、これがどのように行われるのか正確にはわかりません。それは何をするためのものか?

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

python - django サブアプリ内の循環インポート

私は次のセットアップがあるdjangoプロジェクトに取り組んでいます

循環インポートが表示されます。いろいろな組み合わせを試しましたが、うまくいきません。forms.py のコードを models.py に移動したくない

私はもう試した:

いくつかの助けをいただければ幸いです。

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

java - 内部クラスは外部クラスのメソッドを使用します。それは循環参照ですか?回避方法

内側のクラスで外側のクラスのメソッドを呼び出し、外側のクラスで内側のクラスのメソッドを使用することは悪い習慣と見なされるかどうか疑問に思っていました。

この場合: BidParserでは、外部クラスに属するメソッド updateMaps ()を呼び出します。さらに、BidParserで 2 番目の内部クラス InputSanityChecker のメソッドを呼び出しています。

それは悪い習慣と反パターンですか?ここで神のオブジェクトを作成していますか?(ただし、他の外部クラスで従うべき関数がさらにあります)

編集: Outer に属しているが、updateX および checkX メソッドに必要な 2 つの変数 Var1、Var2(としましょう) があります。

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

c++ - C++11、shared_ptr.reset() および循環参照

shared_ptr.reset() の動作について質問があります。

このシナリオでは、次のクラスとの循環参照があります。私は本と所有者を持っています。どちらもお互いに std::shared_ptrs を持ち、循環参照を作成しています。

Book.h

Book.cpp

所有者.h

所有者.cpp

ここに main.cpp があります。この場合、book と owner は相互に強い参照を持っているため、_tmain がそのスコープを終了するとメモリ リークが発生します。それぞれのデストラクタにブレークポイントを挿入すると、book と owner の両方のデストラクタが呼び出されません。

main.cpp

デストラクタが呼び出されるようにポインタを reset() できるかどうかを確認し、循環依存を解消したかったのです。私のshared_ptr.reset()の理解によると、オブジェクトは空になるはずです。

http://www.cplusplus.com/reference/memory/shared_ptr/reset/

ただし、両方のデストラクタのブレークポイントにヒットしていません。私の推測では、book と owner の両方をリセットしたため、両方の参照カウントが 0 になり、_tmain が戻るとそれらは破棄されます。

main2.cpp

これはすでに恐ろしいコードであり、weak_ptr を使用して循環依存関係を削除できることは理解していますが、reset() がこの依存関係を壊さない理由に興味があります。