問題タブ [overloading]

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

java - サブクラスを期待するメソッドにパラメータとしてスーパークラスを渡す

次のようなオブジェクトツリーがあります

そして、私には2つの方法があります:

別のクラスでは、次のことをしたいと思います。

ここで、myBall は Ball 型です。そして、サブタイプに応じて正しいメソッドを呼び出すようにします。どうやら私はこれを行うことはできません... 引数は適用されません。

私が望むものを達成する方法を誰かが知っていますか? または、適切な回避策がある場合

ありがとう

編集:私が構築しようとしているアプリケーションは、クリケット スコアカード タイプのものです。したがって、ボウリングされるボールの種類に応じて、他のさまざまな要素が変化するはずです。

私の当初の意図は、ボールの種類と何らかの形式の UI から得点されるランを指定し、BallFactory から適切な種類のボールを作成できるようにすることでした。たとえば、チームのスコアにボールを送信しないと、値が追加されます。チームのスコアだけでなく、ノーボール カウンターに値を追加します。しかし、同じボールをバッツマン分析に渡して対処すると、バッツマンの合計に値-1しかスコアが付けられません..

私の当初の意図の説明が悪くないことを願っています。

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

c++ - 次のオーバーロード/特殊化の動作に対して正しいコンパイラはどれですか?

次のコードを検討してください。

期待される出力は何ですか?「T」またはint?

1つのコンパイラ(AppleのXcode3.1.2のgcc4.0.1)は「int」を出力し、他の2つのコンパイラ(gcc 4.1.2および4.1.3)は「T」を出力します。

foo(int *、int)宣言/定義をfoo(T *、int)バージョンの前に移動すると、すべて「int」が出力されます。この場合のオーバーロード/特殊化の順序は、現在の標準で定義されていますか?

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

c# - ジェネリック型の特定のインスタンスによって C# メソッドをオーバーロードするにはどうすればよいですか

C++ のバックグラウンドを持っているので、ジェネリック型の特定のインスタンスに基づくオーバーロードで問題が発生しました。Foo<T>クラスのコードのインスタンスが 1 回しか生成されないため、次のコードは機能MethodthisませFoo<T>ん。C++ では、テンプレートが一意の型としてインスタンス化されることに慣れています。Foo<A>Foo<B>

このようなものを C# で動作させる方法はありますか? Foo のコードを、使用したい型ごとに個別のクラスとして複製する必要はありません。

編集:うまくいけば、これはもう少し明確です。

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

c++ - C++ で両方のパラメーターに const を使用して演算子をオーバーライドする

両方の const パラメーターを使用してオーバーライドされた演算子関数を作成しようとしていますが、その方法がわかりません。簡単な例を次に示します。

私がここでやろうとしているのは、const である 2 つの引数を加算関数に渡し、クラス内で何も変更せずに結果を返すことです。

これは可能ですか、どうすればこれを行うことができますか?

ありがとう、

ダン

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

c# - オーバーロードされたメソッドを呼び出すオーバーロードされたメソッド

私が書いているメソッドは、その中で別のオーバーロードされたメソッドを呼び出しています。外側のメソッドへのパラメーターが内側のメソッドに渡されるため、外側のメソッドを 1 つだけ記述したいと思います。これを行う方法はありますか?

ジェネリックを使用してみましたが、これについて十分に知らないため、機能していません。

私はこれを行うことができることを知っています:

しかし、コードをコピーして貼り付けるのではなく、これを正しい方法で行いたいと思います。これを達成するための最良の方法は何ですか?

0 投票する
7 に答える
71744 参照

c++ - C++でのオーバーライドとオーバーロード

はい、私はそれらの違いを理解しています。私が知りたいのは、なぜメソッドをオーバーライドするのかということです。それをすることの良いところは何ですか?過負荷の場合:唯一の利点は、関数の名前を変えて考える必要がないことです。

0 投票する
18 に答える
172543 参照

c# - ASP.NET MVC でコントローラー メソッドをオーバーロードできますか?

ASP.NET MVC でコントローラー メソッドをオーバーロードできるかどうかを知りたいです。試行するたびに、以下のエラーが発生します。2 つのメソッドは異なる引数を受け入れます。これは仕方のないことでしょうか?

コントローラー タイプ 'MyController' のアクション 'MyMethod' に対する現在の要求は、次のアクション メソッド間であいまいです:

0 投票する
14 に答える
100874 参照

programming-languages - 戻り値の型による関数のオーバーロード?

より主流の静的型付け言語が、戻り値の型による関数/メソッドのオーバーロードをサポートしないのはなぜですか? 私は何も考えられません。パラメーターの型によるオーバーロードのサポートと同じくらい有用で合理的です。あまり人気がないのはどうしてですか?

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

java - Javaメソッドディスパッチはジェネリックスと抽象クラスでどのように機能しますか?

私は今日、Javaが期待した方法を呼び出さなかった状況に遭遇しました-これが最小限のテストケースです:(これは不自然に思われるのが残念です-「現実世界」のシナリオはかなり複雑で、はるかに理にかなっています「どうしてそんなことをするの?」という観点から。)

私はこれがなぜ起こるのか特に興味があります、私は再設計の提案を気にしません。これはJavaパズルにあるような気がしますが、コピーが手元にありません。

以下のTest<T>.getValue()内の表彰の特定の質問を参照してください。

このコードからの出力は次のとおりです。

0 投票する
37 に答える
523159 参照

javascript - Javascriptでの関数のオーバーロード-ベストプラクティス

Javascriptで関数のオーバーロードを偽造する最良の方法は何ですか?

他の言語のようにJavascriptで関数をオーバーロードすることはできないことを私は知っています。foo(x)2つの用途があり、foo(x,y,z)どちらが最良/推奨される方法である関数が必要な場合:

  1. そもそも別の名前を使う
  2. 次のようなオプションの引数を使用するy = y || 'default'
  3. 引数の数を使用する
  4. 引数の種類を確認する
  5. またはどのように?