問題タブ [cyclic-dependency]

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

c# - Ninject 循環依存関係 - 既にプロパティ インジェクションを使用

依存性注入を使用するプロジェクトで、循環依存性に問題があります。周りを見回すと、再構築 (私もその一部を行いました) 以外に、それを回避する唯一の方法は、プロパティ インジェクションを使用することのようです。これを試してみましたが、役に立たないようですが、理由はわかりません。これが問題を引き起こしているパスです。

現在、プロパティ注入を使用していることを知っているようで、すべての動作とファクトリが同じスコープ (今はスコープを呼び出しますが、スレッド スコープも試しました) と UserRepository にあります。

プロセスについての私の理解では、それは 4 になり、実際にオブジェクトを作成できるようになるはずです。この時点で、HomeController、IUserRepository、および IInternalUserBehavior への参照が含まれているはずです。その後、5 で動作し、完成した IUserRoleService を InternalUserBehavior に挿入します。最後に、以前にインスタンス化されたユーザー リポジトリを (同じスコープ内にあるため) ModelFactory のプロパティに挿入する必要があります。

したがって、私の質問の短いバージョンは次のようになると思います:プロパティ注入が循環依存の問題を解決しないのはなぜですか?

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

c++ - C++ エラー: 「'class' は型に名前を付けていません」および「不完全な型 'struct ...' の無効な使用」

これは非常に反復的な問題であり、ここでも StackOverflow にありますが、さまざまな答えを試しても問題を解決できません。だから、私はいくつかのクラスを持っています:

main.cpp:

foo.h:

bar.h:

明らかに、私は周期的な依存関係を持っています。そのため、悪名高いエラーが発生します'bar' does not name a type。この場合、宣言に追加class bar;し、 . これを行うと、次のようになります。foo#includeinvalid use of incomplete type ‘struct bar'

バーにも追加class foo;して、いくつかの異なる方法で試しましたが、常に何らかのエラーが発生します。この最後のケースでは、次のようになります。

さらに、私は について不平を言うことはありませんgru。追加情報として、これはこのプログラムに既に存在し、 を追加する前にとbarと一緒に完全に機能していました。mainfoo

役立つアイデアはありますか?どうもありがとう :)

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

class - UML クラス図を C++ コードに変換する (VS 2012)

私はゼロから始めたコース プロジェクトに VS2012 を使用しています。C++ を使用して次のようなものを作成します (集計部分が逆になっていると思います)。

https://www.dropbox.com/s/w2zh7yltbups6cm/class.png

ええと、私たちは紙にそれを持っていて、問題なく各クラスのコードを書きましたが、各クラスはその時点で完成していなかった別のクラスに依存しているためテストできません。簡単に言うと、各クラスにはテストされていない独自のコードがあり、VS はエラーをまったく検出しません。これまでの経験に基づいて、コードが正しいこと、とにかく構文エラーがないことがわかっています。

コンパイルを開始すると、500個のエラーがどこからともなく出てきます。そのうちのいくつかは「time.h」に記載されています。コンパイラに問題があると思い、C::Bに切り替えて動作するかどうかを確認しましたが、別のコンパイラで、大きなファイルをダウンロードする時間がありません。真剣に、締め切りは2日で、インターネットの速度は最低です。

ここでいくつかの調査を行い(そしてグーグルで調べました)、循環依存関係に絞り込み、VSで図を描画してコードファイルを取得できることを学びましたが、残念ながら、C++コードを持っている間はC#でそれを行います)。

この図を C++ で実現するにはどうすればよいですか? どのクラスにどのヘッダーを含める必要がありますか? 今後これを回避するにはどうすればよいですか?


編集:すべての依存関係を削除し、プリコンパイル済みヘッダーを無効にすることで解決しました(必要かどうかはわかりません)。次に、各 .h を対応する .cpp に含め、必要なすべてのヘッダーを各 .h に含めました使用する。私の問題を本当に解決しなかったのは、宣言だけでした!!! #ifndef myclassを実行し、各ヘッダーに #define myclassを使用し、使用するクラスを宣言しました。これは「前方宣言」と呼ばれるものだと思います (間違っている場合は訂正してください) とにかく、最終的にコンパイルしてテストを開始します。

コメントがあれば、ぜひ追加してください。

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

c++ - 名前空間内のクラスの循環依存の問題

循環依存の問題があります。2 つのヘッダー ファイルがあり、それぞれが相互に依存しています。私が抱えている問題は、名前空間内のクラスに関係しています。

ファイル #1

ファイル #2

ファイル #2 で sef::Sub クラスを前方宣言するにはどうすればよいですか?

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

haskell - Haskell データ レコードの循環依存関係を解決する

ポッドキャスト フィードを扱うアプリケーションを書きたいとします。このようなフィードから解析された情報を保存するには、次のように記述します。

上記のデータ レコードの定義は、データ型間の一般的な 1:n の関係を反映しています。ポッドキャストには多くのエピソードがあり、エピソードは 1 つのポッドキャストに属します。今、そのようなポッドキャストを定義する際に問題があります: Do define a PodcastI already need the list of Episodes but to define an Episodeentity I need the Podcastentity. Haskellでは、この循環依存関係を解決することは不可能だと私には思えます...

また、上記のコードは、他の言語でのプログラミングの遺物だと思います。上記のスタイルでは、たとえば python で行いますが、このプログラミング言語には状態の概念があります。Python では、最初にエピソードのないエンティティを定義し、定義されたエンティティでPodcastすべてのエピソードを初期化し、ポッドキャストのフィールドをエピソードのリストに設定できます。Podcastepisodes

私の質問:ポッドキャストとエピソードの間の 1:n 関係をモデル化する Haskell の方法は何ですか?

コメントの質問への回答:

エピソードが特定のポッドキャストを参照する必要があるのはなぜですか? 機能があればいいのに

必要なときにいつでもエピソードのポッドキャストを返します。1つの解決策は、エピソードの各関数にエンティティも渡すことPodcastです。つまり、各関数を置き換えます

podcast上記の関数が必要な場所

できるだけ少ないコードを記述し、Podcastエンティティをどこにでも持ち運ぶ必要がないようにすることは、素晴らしいことです。

質問を少し変更するかもしれません。フィールドEpisodeなしでデータ レコードを定義してもまったく問題ありません。podcastどのように実装できますか

この場合?

誰かが後で他のポッドキャストのエピソードを含むポッドキャストを作成した場合はどうなりますか? 私の場合はそうはなりませんし、仮にそうであったとしても、同じエピソードを別のエピソードと考えても全く問題ありません。(実際、この問題を考慮すると、1:n 関係が n:n 関係に持ち上げられますが、haskell でこれらの関係を定義する方法の主な問題は同じままです)。

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

scala - 異なる構成の相互依存プロジェクトに SBT を使用する方法

次の SBT ビルド セットアップが必要です。

coreドメイン オブジェクトを含むメイン モジュールでありtestkitドメインオブジェクトや.core

このセットアップでは、SBT はエラーを返しますが、実際には異なる構成 (をコンパイルし、次に に依存してコンパイルし、次に両方に依存してコンパイルCyclic referenceする) を使用しているため、循環的な依存関係はありません。coretestkitcorecore test

dependsOnuseの 1 つを置き換えることで、この問題を回避する汚い方法を見つけましたunmanagedClasspath。たとえば、次のようになります。

これはハックのように感じられ、sbt-idea(とりわけ) 不適切な IntelliJ プロジェクトが生成されます。

より良い解決策のアイデアはありますか? SBT はそのような構造をサポートしていますか?

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

java - Java のハッシュマップで循環依存を検出する

次のハッシュマップがあります。

非周期的なケースの例は次のとおりです。

周期的なケースの例は次のとおりです。

周期的なケースを拒否したいので、提供されたハッシュマップに周期があるかどうかを検出できる関数が必要です:

サイクルを検出するアルゴリズムを提案する投稿を読んだことがありますが、Java の初心者であるため、その知識を使用して上記の関数を構成することはできませんでした。

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

python - カスタム PyYAML コンストラクターで再帰を処理するにはどうすればよいですか?

PyYAML は、通常の Python オブジェクトで巡回グラフを処理できます。例えば:

スニペット #1。

このコードは成功するので、シリアライズされたオブジェクトをロードする際の無限再帰を防ぐ何らかのメカニズムがあることは明らかです。独自の YAML コンストラクター関数を作成するときにそれを利用するにはどうすればよいですか?

たとえば、は一時的なフィールドと、および非Node一時的なフィールド を持つクラスであるとします。yamlドキュメントにする必要があります。私はこれをしたいと思います:foobarchildchild

スニペット #2。

しかし、それは失敗します:

理由がわかります。私のコンストラクター関数は再帰用に構築されていません。親オブジェクトの構築を完了する前に子オブジェクトを返す必要があり、子と親が同じオブジェクトである場合は失敗します。

しかし、スニペット #1 が機能するため、明らかに PyYAML にはこの問題を解決するグラフ トラバーサルがあります。おそらく、すべてのオブジェクトを構築するための 1 つのパスと、それらのフィールドに値を設定するための 2 番目のパスがあります。私の質問は、カスタム コンストラクターをこれらのメカニズムにどのように結び付けることができるかということです。

その質問に対する答えは理想的です。しかし、答えがカスタムコンストラクターではこれを行うことができないというものであり、あまり望ましくない代替手段がある場合 (たとえば、YAMLObjectクラスを自分のNodeクラスに混在させるなど)、その答えも高く評価されます。

0 投票する
0 に答える
578 参照

haskell - Haskell でこの循環的なモジュール依存関係を処理する方法

簡略化された階層:

モジュールMyStateがあります:

最後に、循環依存を導入するモジュール:

ご覧のとおり、私の SomeType は A をインポートします。これは、フィールドの 1 つに必要だからです。そして A は、循環依存を導入する何らかのタイプをインポートする状態をインポートしています。

この循環依存を解決するにはどうすればよいでしょうか? ありがとう。