問題タブ [invariants]

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 に答える
1324 参照

eclipse-emf - Ecore 分類子を使用した OCL 制約 - 未知の型の例外

OCLinEcore エディターを使用して、OCL で定義されたいくつかの不変式を持つ Ecore モデルを開発しています。私のモデルでは、一部の要素が EClassifier への参照を持っています。一部の OCL 制約では、参照されている EClassifier が EDataType か EClass かを確認する必要があります。これは、OCLinEcore にある、私が持っているモデルに似たモデルです。

ただし、モデルの動的インスタンスを検証しようとすると、次のメッセージで例外が発生します。

'Coupling' の 'Compatibility' 制約の評価を委譲中に例外が発生しました: 不明な型 ([ecore, EDataType])

OCL インタラクティブ コンソールで式を試すと、正しい結果が得られます。不変条件を定義するときに何か間違ったことをしていますか? Ecore 型を使用する不変式を作成するにはどうすればよいですか?

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

c# - さまざまなジェネリックの配列

簡単に言うと、使用されるすべての型の親型を使用することで、配列内のさまざまな型パラメーターを使用してジェネリックスを格納できるようにしたいと思います。MSDNは、ジェネリックスは不変型であるため不可能であると述べましたが、4.0フレームワーク以降、これが変更されたとのコメントがありました。

これが私がやりたいことの基本的な例です:

これにより、同様のエラーが返されます。

タイプの親クラスを使用してジェネリックスを配列に格納する方法はありますか、それともこれは単に不可能ですか?私はそれが可能であることを本当に望んでいます、さもなければそれは私のプログラムを悪夢にするでしょう...

編集:もう少しコンテキスト!

ゲームで敵を生成するクラスを作っています。私はそれらをテンプレートと呼んでいます(実際のテンプレートクラスとは関係ありません。ブループリントまたはファクトリーと呼んでもかまいません)。敵のコンストラクターはテンプレートを受け取り、それを使用して自身の値を決定します。ゲームが読み込まれると、テンプレートを使用して、Generate()関数を使用してすべての敵を生成します。この関数は、生成するように割り当てられている対応するタイプの配列を返します。テンプレートを使用して作成されるすべてのオブジェクトには、テンプレートを唯一のパラメーターとして使用するコンストラクターが必要です。

これは、実際の敵のクラスとテンプレートを含むBasicZombie.csファイルの要約です。

ゲームをロードするとき、私はそれらから敵をロードするために配列内のすべてのテンプレートを調べたいと思います。これは手動で実行できることはわかっていますが、新しいタイプの敵を作成するたびに、手動でコードに追加する必要があります(したがって、おそらく2回以上忘れてしまいます)。

私の2つのオプションは次のとおりです。1-ジェネリックを使用すると、上記の問題が発生します。2-非ジェネリックを使用し、型を内部に格納します。これにより、戻り型のGenerate()関数が固定されます。これは、生成関数がオブジェクトの配列を出力することを意味します。この配列は、テンプレートが敵の配列を生成するたびに適切なタイプに変換する必要があります。

私の頭の中には、これらすべてにエレガントな解決策があることを伝えるスペースがあります。それが正しいことを願っています。

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

java - コンピュータ用語の事前条件、事後条件、および不変条件の違いは何ですか

Java Concurrency in Practiceという本を読んでいて、これらの用語と少し混乱しています。

  1. 前提条件
  2. 投稿条件
  3. 不変条件

誰かが私にそれらを説明してもらえますか(可能であれば例を挙げて)?

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

java - Javaリストを共変にする方法

私は次のクラスを持っています

そしてテストのために、私はドライバークラスを持っています。

デフォルトではリストは不変型コンテナです。たとえばList<Object> objectListArrayList<String> stringListstringList を objList に置き換えることはできません。これはコンパイルエラーを引き起こします

私の試みは、Driver クラスのようにリストを共変にすることです。

に従って、<? extends Animal>Animal タイプを含む Animal のサブタイプである任意のオブジェクトを適用できます。

しかし、指定された行でコンパイルの問題が発生しています。誰かが私が間違った場所を理論的に説明できますか.

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

image-processing - 物体認識における胡七不変モーメントの意味

私の質問は、胡の 7 つの不変モーメントの意味についてです。

私の知る限り、いくつかの瞬間には意味があります。つまり、ゼロ次は画像の領域を指します。また、http://mathworld.wolfram.com/topics/Moments.htmlに記載されているように、さまざまな順序のモーメントから多くの特徴を抽出できます。しかし問題は、Hu モーメントによってどのような特徴が抽出されるのかということです。彼の仕事の重要なポイントは、これらの機能が RTS (回転、平行移動、およびスケール) に対して不変であるということです。しかし、私の質問は、これらの機能が何を表しているのですか? これらの特徴と画像内のオブジェクトとの関係は?

ご協力いただきありがとうございます。

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

scala - 共変タイプTは不変位置で発生します

私はScalaで最初のステップを進めており、次のコードを機能させたいと思っています。

コンパイラが与えるエラーは次のとおりです。covariant type T occurs in invariant position in type => Array[T] of value gene

私は次のようなことができることを知っています:

しかし、値が必要なため、これでは問題は解決しません。実際に私が言おうとしているのは、「内部のタイプは気にしない。遺伝子には、その内容を返す遺伝子フィールドがあることを知っている」ということです。(ここでの+ Tは、次のようなことをtype Genome = Array[Gene[Any]]行い、それを単一の遺伝子クラスに対するラッパーとして使用して、異種の配列型を持つことができるためです)Scalaでそれを行うことは可能ですか、それとも単に間違ったアプローチを取っていますか?Scalaのネイティブ共変クラスのように、別の構造を使用する方がよいでしょうか?

前もって感謝します!

PS:トレイトではなく、クラスと抽象クラスも試しましたが、常に同じ結果になります。

編集:ディディエデュポンによる親切な提案で私はこのコードに来ました:


だから今、私はさまざまなタイプのデータを入れて取得し、それらをすべてのタイプチェックグッズで使用できると思います!

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

c++ - C++11 の「移動元」オブジェクトの有効な状態を構成するものは何ですか?

私は、C++11 のムーブ セマンティクスがどのように機能するかについて頭を悩ませようとしてきましたが、ムーブ元オブジェクトが満たす必要がある条件を理解するのにかなりの苦労をしています。セマンティクスを移動するという議論はpimplsに最適です

私の問題の最も簡単な例は、次のような pimpl イディオムに関係しています。

では、引っ越してきた後はどうすればよいのFooでしょうか。移動元のオブジェクトを安全に破棄し、割り当てることができます。どちらも非常に重要です。ただし、 でやろうとするdo_stuffFoo爆発します。の定義にムーブ セマンティクスを追加する前はFoo、everyFooは できるという不変条件を満たしていましたがdo_stuff、それはもはや当てはまりません。(たとえば)moved-fromFooを配置すると、新しい動的割り当てが必要になり、移動セマンティクスの目的が部分的に無効になるため、優れた代替手段はあまりないようです。impl_入っているかどうかを確認do_stuffして、デフォルトに初期化できましたFooImplそうであれば、それは(通常は偽の)チェックを追加します。メソッドがたくさんある場合は、すべてのメソッドでチェックを行うことを忘れないでください。

do_stuffできることは合理的な不変条件であるという考えをあきらめるべきですか?

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

c++ - ネストされたループ/ループ不変条件で何かを一度チェックします

ネストされたループで反復ごとに1回だけ何かを行う最も賢い方法は何ですか?外側のループが非常に複雑なため、不変部分を引き出すことができません。これが私のC++の例です:

このメソッドは、tree.cycleがインクリメントされるまで頻繁に呼び出されます。oldCycleはfooのプライベートメンバー変数です

コンパイラはこのコードを最適化しますか、それともifチェックは反復ごとに実行されますか?

編集:ここでは、ループを使用してコードを要求したように、最初のループはmexFunction()メソッドにあり、アルゴリズムはmatlabで開始され、mexFunctionを呼び出します。

そしてここに他のループがあります:

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

c++ - 不変条件に影響を与えないセットの非定数イテレータを介してメンバーにアクセスする

次のようなコードがあるとしましょう:

MoreFields を記述しても不変条件に影響を与えないこと、またはセット内の要素の順序を無効にするようなことをしないことをコンパイラに保証するにはどうすればよいですか?

ベクトルなどの別のコンテナーを使用することが唯一の手段である場合、既に存在するかどうかを確認しながら、並べ替えられた位置に新しい値を挿入するにはどうすればよいですか?

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

java - 不変検出を行うために大根チコリを使用していますが、java.lang.VerifyErrorを満たしています

大根の使い方を学んでいます。Chicoryは不変の検出を行います。しかし、java-examplesの部分では、このコマンドの後にこのエラーが発生します

私はWindows7でcygwinシェルを使用しています。