問題タブ [library-design]

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

java - Java の java.lang.Thread クラスが設計者によって final とマークされていないのはなぜですか?

Runnable を実装して Thread コンストラクターに渡すことで同じ機能を実現できる場合、ユーザーが Thread クラスを拡張してスレッドを作成できるようにすることの本質は何ですか。

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

function - Function.constの目的は何ですか?

それはScalaDocにありますが、多くのドキュメントはありません。常に最初のパラメータを返すようです。

Function.const(1)(2)たとえば、を返します1

なぜそれが存在し、なぜそれが有用なのですか?

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

regex - RegexTest に main メソッドがあるのはなぜですか?

なぜscala.util.parsing.combinator.testing.RegexTestに main メソッドがあるのだろうか。

ライブラリ クラスは、プログラム内から呼び出され、独立した実行可能ファイルとして個別に実行されることを意図していませんか?

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

javascript - 自分自身のインスタンスを返すオブジェクト

背景:私の最新のプロジェクトでは大きなライブラリを使用できません。これは悲しいことです。addClass欠落している関数、hasClassremoveClass、 compatibleなど、どのライブラリからでも取得したいことがいくつかあります。そのため、別の機会に意見を求めたい小さなオブジェクトaddEventListenerを作成しましたが、私が望むように設定するのに少し苦労しました。

使いやすいように、作成時にオブジェクトがそれ自体の新しいインスタンスを返すようにします。

与えられた:

$JavaScriptの風変わりな性質のため、代わりに DOMWindow を取得thisします。 私にとってさらに奇妙なのは、それがconsole.log(new $().name)適切に "levi" を返すことです。がウィンドウにバインドされている場合this、オブジェクトが適切に値を取得したのはなぜですか? . 新しいものを追加するだけconsole.log(new $())で機能します。ただし、毎回新しいことを書きたいわけではありません。だから私は試しました:

これは私が望むものを与えてくれますが、オブジェクトを作成する関数内にオブジェクトをラップするのは少し不必要に思えます。さらに、返されるオブジェクトは is objand not$です。比較テストは失敗します。

これを行うには、他にどのような方法がありますか? よりエレガントなソリューションはありますか?プロセス全体を再考することに何の不安もありません。私は JavaScript を使うのが得意だと思っていますが、新しい JavaScript を作成するのは初めてのことです。


次の解決策に問題があると思われる人はいますか?

私のすべてのテストで機能しているようです。

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

scala - 不変の最終シングルトン オブジェクトの val または object

変更がソースと互換性があることを考えると、どのソリューションが一般的に優先されるべきですか?

これ

またはこれ?

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

c++ - テンプレート クラス内でフリー テンプレート関数をインスタンス化する

テンプレート クラス (TC) 内でフリー テンプレート関数 (FTF) をインスタンス化する必要があります。FTF は、TC のテンプレート パラメータの 1 つをテンプレート パラメータとして使用します。TC はこれらの FTF への汎用ポインターも保持しており、これらの関数はポインターを介して呼び出されます。

FTF へのポインターを取得する手順ではインスタンス化するのに十分ではなく、GCC ツールチェーンからリンカー エラーが発生します。MSDN は FTF 仕様をそのように示していますが、FTF のインスタンスは TC のテンプレート パラメーターに依存しているため、FTF のインスタンス化をフリー スコープに配置することはできません。

これは可能ですか?いくつかの基本的な生成コードを添付しています。問題は、のコンストラクターにありclass test_serviceます。ここで、フリー関数のポインターをカスタム コンテナーに割り当てます。フリー関数が見つからない (インスタンス化されていない) というリンカ エラーが表示されます。クラスのどこかでテンプレート関数への呼び出しを指定するとインスタンス化が生成されることはわかっていますが、ポインターを介してのみ呼び出しを行います。

編集: 自己完結型の最小バージョン

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

network-programming - boost::asio および boost::bind エラー

この質問は少し面倒です。次のコードをコンパイルできません。以下のコードをコンパイルする必要があります。

ブースト asio で問題が発生しています。接続を受け入れるロジックを均一な抽象化に抽象化して、Windows の名前付きパイプと Unix ドメイン ソケットの接続を通常の TCP/IP で均一に開始できるようにしようとしています。

以下のコードには 3 つのクラスがあり、最初の 2 つは TCP 接続を受け入れるための実装であり、下の 3 番目のクラスは最初の 2 つに関して実装されているジェネリック クラスですboost::bind。呼び出しに問題があります。問題はおそらく、セマンティクスに対する私の理解にあります。

通常のメンバー関数 (つまり、テンプレート メンバー関数ではない) を作成TcpDestinationAcceptor::handle_acceptすると、パラメーターを渡せなくなりAcceptHandlerます。コードは正常にコンパイルされます。注: からテンプレート関数のステータスを削除しませんTcpDestinationAcceptor::StartAccepting

注: すでに別のデザインを開始していますが、可能であればこのデザインを追求したいと考えています。

自己完結型コード:

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

xml - scala.Predef の $scope の目的は何ですか?

scala.Predef次のコードが含まれています。

標準ライブラリから簡単に分割できるパッケージへの依存関係を作成することを考慮して、誰かがなぜそれが必要なのかを理解しましたか?

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

javascript - jqueryチェーンコールバックの「this」がDOM要素であるのはなぜですか?

したがって、、などを使用する場合、jQueryチェーンコールバック内のキーワードはDOM要素であることが標準であることがわかって$.fn.eachいます$.fn.bindthis

私の開発では、少なくともDOM要素をjQueryセットでラップする必要があることを知っています。90%の確率で実行することになりvar $this = $(this)ます。ラップされていない要素にバインドすることを選択した理由には、(おそらくパフォーマンスベースの)良い理論的根拠があったと確信していますが、それが正確に何であるかを誰かが知っていますか?

これは、答えを知っていると、図書館と言語をより深いレベルで理解するための扉が開かれるかもしれないと私が感じていることの1つです。

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

delphi - TStringListにBeginUpdateとEndUpdateがあるのはなぜですか?

TListBoxなどのVCLコントロールでBeginUpdateとEndUpdateを使用すると、EndUpdateが呼び出されるまで、コントロールが再描画されないため、コントロールにItemsを設定するプロセスが高速化されることを理解しています。

例:

上記はリストボックスの再描画が許可されているため遅延がありますが、次のように再描画を防ぐことで遅延を短縮できます。

次に、TStringListを使用してこれをテストしました。

TStringListがBegindUpdateとEndUpdateを使用しているかどうかに関係なく、リストはほぼ同じ速度で読み込まれるようです。

TStringListは視覚的にではなくメモリ内で実行されるため、これらは本当に必要ですか。とにかくTStringListでBeginUpdateとEndUpdateを使用する必要がありますが、これを行うのは良い習慣ですか?

これを尋ねるのはばかげていると思いますが、なぜTStringListにBeginUpdateとEndUpdateのプロシージャがあるのですか?

私はここで私自身の質問に答えたかもしれないと思います。どちらにしても、あなたの意見を聞きたいと思います。

ありがとう :)