問題タブ [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 に答える
126 参照

javascript - システム値を JavaScript に渡す最適な方法

サーバーからブラウザに、ユーザーに表示されるべきではないオブジェクトとカテゴリ ID またはその他のシステム変数を渡す最も効果的な方法は何ですか?

たとえば、ツールチップ html を表示したり、ajax でお気に入りに追加したり、マップに表示したりできます。そのツールチップ html、データベース ID、または地理的位置をどこに保存するのが最適ですか?

私が考えることができるいくつかのオプションは次のとおりです。

  • <script></script>各アイテムのタグ内の辞書、
  • マイクロフォーマット、
  • インラインxml、
  • rel属性、
  • 特定の情報を含む css クラス名class="lat-12345 uid-45678"
  • <script></script>テンプレート内のシステム値を持つ html ids マッピング辞書の辞書を持つもの、
  • データベースから生成され<script src="..."></script>、テンプレート内のシステム値を使用して辞書をマッピングする html ID の辞書を介して含まれる javascript、
  • id 以外の情報が必要な場合は、すべてのケースで ajax リクエストを使用します。
  • html タグ内のパラメーターを持つイベント ハンドラーonmouseover="tooltip(this, 123, 'Hello world!')"

PS私は目立たないソリューションを好み、ロード/実行時間も重要です。

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

programming-languages - ジェネリックプログラミングとメタプログラミング

違いは正確には何ですか?用語は多少互換的に使用できるようですが、Objective-c のウィキペディアのエントリを読んでいると、次のように出くわしました。

C の手続き型プログラミングのスタイルに加えて、C++ は特定の形式のオブジェクト指向プログラミング、ジェネリック プログラミング、およびメタプログラミングを直接サポートします。

C++ を参照してください。どうやら彼らは違うのですか?

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

c++ - 多重継承オブジェクトのクローンを作成するにはどうすればよいですか?

クローン可能なインターフェースを定義しました:

他にもいくつかのインターフェイスクラスがあります(問題に関係のないコンテンツ):

上記のクラスから継承するリーフオブジェクトを作成しました。

エラーが発生しました:

タイプをに変更するとCloneable *、次のエラーメッセージが表示さ れます。

私の質問(すべて関連):

  1. リーフクラスはどのようにしてCloneable インターフェースの要件を解決できますか?
  2. すべてのオブジェクトがクローン作成を実装することが保証されているクローン作成コントラクトを実装するためのより良いソリューションはありますか?

私はこのパラダイムをジェネリックプログラミング(レコード、フィールド、データベース)の一部として使用しています。

コンパイラ:MS Visual Studio 2008; プラットフォーム:WindowsXPおよびVista

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

java - .NET のような Java のデリゲート

デリゲートは .NET のものとは少し異なるため、Java でのアプローチに関するアドバイスが必要です。同じ名前と同じメソッド名を持ついくつかのインターフェイスを作成したいと思いますが、それらが異なるのはパラメーターの数だけです。.NETのアクションのようなもの

いくつかのコード サンプル。

今のところ機能するのは、このように実装された抽象クラスです。

次に、いくつかのクラスで、このようなことを行うことができます。

それはうまくいきますが、私が必要とするのは、1つに割り当てることができるさまざまなインターフェースのようなものです..

いくつかのアイデア?

編集:

目標は何ですか?

定義を変更する可能性があるのは非常に簡単です

の中へ

そして呼び出しで

クラスのインポートなどを変更せずに

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

c++ - アルゴリズムを制御するためのファンクターのコンパイル時のコンテナー?

次のような単純なものが必要だとします。

特殊なアルゴリズム (コンパイル時に特殊化された) の 1 つをランダムに選択し、このアルゴリズムを処理するコア アルゴリズムがあります。これらの特殊なアルゴリズムは、ファンクターを通じて実装されます。

問題は次のとおりです。コンパイル時にビルドされるコンテナーを実装する方法です。コアアルゴリズムは最初にこのコンテナーのサイズを確認できます (「4 つのアルゴリズムを取得しました -> アルゴリズム 0-3 をランダムに選択する必要があります」)そして、このコンテナーでファンクターを実行できます (「ランダムに選択された 2 -> コンテナー内の 3 番目のファンクターを処理する」)。

できるだけ簡単に実装するにはどうすればよいでしょうか。可能だと思います。

奇妙に繰り返されるテンプレートイディオムとの関連はありますか? (ウィキ リンク) Boost::Fusion
を使用する簡単な方法はありますか? (公式ドキュメント)

編集:すべてのアルゴリズムはコアアルゴリズムで使用されます。使用パターン (乱数) は実行時の決定です (したがって、コンパイル時のランドは必要ありません)。アルゴリズムは、安全にアクセスするために、ファンクターのコンテナーとこのコンテナーのサイズを認識している必要があります。

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

language-agnostic - この高階関数に名前はありますか?

このパターンは私のコードやライブラリのいたるところに見られますが、どこにも見つけることができる名前や抽象化はないようです。

例 (疑似コード)

基本的に: 値と、その値を変換する関数を受け取ります。値のコピーを作成し、変換して返します。

実際の例 (C++)

基本的に、インプレース関数 (副作用あり) があり、そこからアウトオブプレース関数 (副作用なし) を作成します。

このパターンに名前はありますか?それを使用するライブラリまたは言語を知っていますか? 明らかに関数型言語は、そもそも参照的に不透明な関数を持っていないため、それを使用しません。

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

java - ジェネリック クラス自体の参照を含む配列リストを持つジェネリック クラス

主に私は持っています:

adiacentノードへのポインターをcotainするために、クラスNodeのnextが必要です

しかし、JavaはNullPointerExceptionをスローします

私を助けてください。

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

c - C での一般的な実装

こんにちは、

クラスの割り当てのためにいくつかのプログラムを実装していたときに、C を使用して一般的な方法で同じものを実装するのはどうだろうかと思いました。

void ポインターと関数を使用する必要があることは知っていますが、その方法については行き詰まっていました。簡単で使用法を示す例を教えてください。

比較関数を実装して比較 sort を実装する方法、または各ノードがさまざまなタイプの要素を持つリンクリストに挿入する方法など...

PS : 他の質問や記事へのリンクは役に立ち、歓迎します。

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

c++ - 複数の関数または構造体に単一のTemplateステートメントを使用するにはどうすればよいですか?

スタックをテンプレートとして表現しようとしてきましたが、構造体を使用してすべてがうまくいきましたが、テンプレート関数を作成するたびに、同じテンプレートステートメントを作成する必要がありました。働く-

では、すべての関数に対して1つのテンプレートステートメントを作成するにはどうすればよいですか?コードは次のとおりです。

私が言っていることが今はっきりしていることを願っています、ちょっとした質問でごめんなさい:(

前もって感謝します。

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

arrays - Map [Int、Map [Int、X]]をArray[Array[X]]に再帰的に変換します

整数キーのマップ間で対応する配列に変換する関数を作成しようとしています。基本ケースは完了しましたが、再帰ケースを書き込もうとしています(つまり、多次元配列:Map [Int、Map [Int、X]]をArray [Array [X]]に変換します)。

このタスクは、配列の大きさを事前に知らずにストリームから配列を構築する必要性から生じました。これにより、要素がランダムな順序でストリームから外れる可能性と、重複する要素がストリームから外れる可能性があります。

私はそれを行う関数を持っています:

マップにキーkが含まれているが、キーiが含まれていない場合(0 <= i <k)、コードが失敗することに注意してください。これは私の目的には問題ありません。

今、私は任意の深さの多次元配列に対して同じことをしようとしています。たとえば、Map [Int、Map [Int、X]]からArray[Array[X]]に変換します。残念ながら、私はタイプにつまずきました。上記をベースケースとして使用して、これまでに私が持っているものは次のとおりです。

これは私が得るエラーです:

'=>'が必要ですが、'forSome'が見つかりました。

これは教育的な目的であるため、フィードバックをいただければ幸いです。具体的には、私のひどくJavaに見えるコードのコード批評、同じことを行う既存のscala関数、またはこれらの配列を構築するための代替方法の提案をいただければ幸いです。