問題タブ [generic-programming]

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

c# - .NETジェネリックリスト問題は、設計どおりに機能し、回避策が必要です。参照の代わりに値を追加する

私は持っています、List<T>そして私は私が概説しようとしている行動を避ける必要があります:

これにより、この書き込み行は同じ値を出力します。

基本的に必要なのは、「Add」メソッドの動作を変更することです。同じオブジェクトへの単なる参照ではなく、同じ値を持つオブジェクトの新しいインスタンスを追加したいと思います。これにより、より多くのメモリが使用されることを理解しています。

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

c# - C# のジェネリック メソッド

一般的なジェネリック メソッドは、私にとって初めてのことです。ジェネリック型の Collection を返すメソッドが必要ですが、同じジェネリック型のコレクションも取り、

パラメータ。次の関数全体で T は同じ型である必要があるため、現在は (簡略化されたバージョン) を使用していました。

しかし、私はエラーを受け取っています:

エラー: メソッド 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumberable, System.Func)' の型引数は、使用法から推測できません。型引数を明示的に指定してみてください。

とにかくこれを行うことはありますか?

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

language-agnostic - 正式なソフトウェア設計における無定形サブシステムの取り扱い

Alexander Stepanov や Sean Parent のような人々は、ソフトウェア設計に対する形式的で抽象的なアプローチに投票しています。
アイデアは、複雑なシステムを有向非循環グラフに分解し、その動作を表すノードに循環動作を隠すことです。
親はboost-conとgoogleでプレゼンテーションを行いました(boost-conのシート、p.24でアプローチを紹介、google talkの動画もあります)。

私はこのアプローチが好きで、必要な開発だと考えていますが、無定形の動作をするサブシステムをどのように処理するかを想像するのに問題があります。
たとえば、状態マシンの一般的なパターンを想像してみてください。すべての状態がサポートするインターフェイスを使用し、状態の具体的な実装で異なる動作をすることです。

どうすればそれを解決できますか?
私は抽象的なアプローチを探しているだけであることに注意してください。

その動作をノードの背後に隠し、状態ごとに異なるサブ DAG を定義することも考えられますが、サブ DAG からメイン DAG の動作に影響を与えたい場合、設計がかなり複雑になります。

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

c++ - テンプレートの問題(テンプレート関数パラメーターではなく「typename」)

実際、インテル®コンパイラーを使用してライブラリーをコンパイルする際に問題が発生しました。

この同じライブラリは、g++で適切にコンパイルされています。

テンプレートが原因で問題が発生します。私が理解したいのは、 **typename**テンプレートではない関数パラメーターとしての宣言と、関数本体内の変数宣言です。

例:

この種のコードをコンパイルすると、次のエラーが発生します(intel)、(gccは主張しません):次のエラーがあります

私が理解したいのは、関数の本体内での型名の使用法、パラメーター宣言です。

元。:

別のファイルで私は:

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

wpf - DataTemplate.DataType = コレクション?

アイテムのリストを処理するデータ テンプレートを作成する方法はありますか?

私は Contact.Phones ( EntityCollection<Phone>) を持っており、データ テンプレートでリストを処理する必要があります - add remove edit など。

DataTemplate の DataType プロパティを generic に設定する方法はありますEntityCollection<Phone>か?

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

c# - ジェネリックの良い紹介

利点に強いられて、ジェネリック プログラミングを現在のプログラミング スタイルに統合する方法を探しています。C# でジェネリックを使用したいのですが、日常的な使用例を含む適切な入門資料が見つかりません。ジェネリックの経験がある場合: ジェネリックを学ぶのに最も役立つリソースは何ですか? (書籍、記事など)

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

c++ - STL と単項関数を適用したファンクターを使用してリスト メンバーシップをチェックする

要素の順序を無視して、2 つの std::pair 項目とそれらの等価性をテストする簡単なユーティリティ ファンクターを作成しようとしました。さらに (ここで問題が発生します)、これらの std::pair アイテムのコンテナーを取得し、コンテナー内の特定のペア引数のメンバーシップをテストする関数を作成しました。

ジェネリック コンテナーの選択を許可するクリーンな方法が思いつかなかったので、現時点では std::vector をコンテナー タイプとしてハードコーディングしました。コンテナー タイプをジェネリックにするためのヘルプもいただければ幸いですが、今のところ、上記をコンパイルして動作させたいと思います。私が得るエラーは次のとおりです。

提案されているように「typename」を追加してコードを変更すると、次のエラーが発生するだけです。

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

haskell - 多くの無関係なタイプを扱うときに定型文を避ける

私はLanguage.Exts.Annotated.Syntaxからの値を処理するコードを書いています。ここでは、Haskellモジュールの構造を反映するさまざまなタイプが定義されています。

これらのデータ構造をウォークし、さまざまな変換を実行する関数を記述できるようにしたいと思います。共通のデータ型が1つもないため、すべてを実行する1つの関数を作成することはできません。

これまでのところTree、変換関数が実行できるように、これらの各型をラップする型を作成しましたTree l -> Tree l

しかし、私は今、を取り、ModuleそれをラップしModuleT、関数を呼び出し、そして結果をModule再びアンラップする多くのコードを書いていることに気づいています。私は持っています:

2つの質問:

  1. Language.Exts.Annotated.Syntaxの型を変更できないことを考えると、これは間違った方法で行っているのでしょうか。
  2. そうでない場合は、この定型文をなんとかして削減できますか?
0 投票する
2 に答える
956 参照

haskell - あいまいな型変数

データ構造のトラバースに関する以前の質問に関連して、ユニプレートパッケージと一緒に使用すると、コードを汎用化するのに問題があります。私はLanguage.Exts.Annotated.Syntaxモジュールのデータ構造を扱っています。これらはすべてtypeパラメーターを持つ汎用lです。これlはツリー全体で同じです。

私が書いているコードの種類は次のようなものです。

このコードは、最後の2行の両方で次のエラーを生成します。

このコードがあいまいである理由がわかります。aをtransformBi受け入れて;に変換します。私の場合、inとinの間にリンクはありません。私が見ないのはそれを修正する方法です。のような型制約を追加しようとしましたが、同じエラーが発生します。これを行うと、まるで新しいものを紹介しているようです。(to -> to)fromfromlChild1 llParent ltransformBi (doInt :: Child1 l -> Child1 l)l

、およびに同じlものを使用していることをコンパイラに伝えるにはどうすればよいですか?replacetransformBi doInttransformBi doString

編集: これは私がしていることを示す完全なプログラムです。GHC 6.10.4では、このプログラムはコンパイルに失敗し、上記のエラーが発生します。

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

java - Java ジェネリック クラスとワイルドカード

Java のジェネリック クラスに問題があります。

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

このクラスの実装は次のとおりです。

ConcreteItem は、AbstractItem (抽象) を拡張する単純なクラスです。

MyChildClass には ConcreteItem があり、次を使用できます。

わかりました、今のところすべて問題ありません。問題は次のとおりです。

ここで、コレクションから MyMotherClass のインスタンスを抽出し、そのアイテムを設定します (タイプは不明です)。

私がこのようにすれば、それは実行されます。しかし、 MyMotherClass はジェネリック型であり、ジェネリック型を使用していないため、警告があります。しかし、抽出した子のタイプがわからないので、ワイルドカードを使用したいと思います。

そして、ここに問題があります: 次のようなコンパイル エラーが発生しました: The method setItem(capture#1-of ?) in the type MyMotherClass is not applied for the arguments (AbstractItem)

継承されたワイルドカードを使用しようとすると、同じ問題が発生します:

私に何ができる ?

あまり流暢ではない私の英語に感謝し、申し訳ありません;)