問題タブ [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.
python - クラスで__getitem__を定義すると、Pythonで反復可能になるのはなぜですか?
クラスで __getitem__ を定義すると反復可能になるのはなぜですか?
たとえば、私が書いた場合:
出力が得られます:
「for k in cb:」からエラーが返されることを期待しています。
c# - 異なるタイプのジェネリックリストをパラメーターとして受け取るメソッドのオーバーロード
さまざまなタイプのジェネリックリストをパラメーターとして受け取るメソッドをオーバーロードするにはどうすればよいですか?
例えば:
私にはそのような2つの方法があります:
これら2つの方法を1つに組み合わせる方法はありますか?
c# - メソッドのオーバーロードの戻り値
C# では、メソッドを定義できるようにする必要がありますが、1 つまたは 2 つの戻り値の型を返す必要があります。実行しようとすると、コンパイラはエラーを返しますが、どのメソッドを呼び出す必要があるかを知るほど賢くないのはなぜですか?
戻り値の型が異なる 2 つの関数をコンパイラが禁止するのはなぜですか?
c++ - すべてのクラスとクラス テンプレートを受け入れる C++ テンプレートを作成する方法は?
事前に注意してください。この質問は、実際よりもはるかに明白に思えます。
任意の具象クラスまたはテンプレート クラスをテンプレート パラメーターとして受け入れることができるテンプレートを作成したいと考えています。渡された T がテンプレート化されているかどうかを知らなければ、その使用方法がわからないため、これは役に立たないように思えるかもしれません。これが必要な理由は、定義のない一般的なテンプレートを宣言して、ユーザーが特化できるようにするためです。ユーザーはそれを専門に扱っているため、自分が扱っている型について常に知っています。ただし、ユーザーは、最初に宣言されていないテンプレートを特殊化することはできません。
あなたはこれを行うことができます:
ただし、テンプレート化された T を渡すと、それは機能しません。たとえば、機能しmyclass<std::vector>
ません。それで、これを試します:
これは正しい方法かもしれませんが、クラス テンプレートをオーバーロードできないため、そのままでは機能しません。それでは、次のような関数テンプレートに切り替えましょう。
いいですね、これで終わりですよね?テンプレートのテンプレート パラメータに指定されたパラメータの数が異なる可能性があるため、それも考慮する必要があります。
醜いですが、Boost Preprocessor Libraryがこのコードを生成してくれます (C++0x では可変個引数テンプレートのサポートが追加されるため、この醜さは一時的なものです)。しかし、私たちはまだケースを忘れています! T のパラメーターの 1 つがクラスではなく、定数の整数である場合はどうなるでしょうか。それをサポートしようとしましょう:
ええとああ。任意の定数型を任意の数でテンプレートに渡すことができ、クラス パラメータと混合できるとすれば、KABLOOEY の組み合わせ爆発です。さらに難しいことに、T のパラメーターのいずれか自体がテンプレートである場合はどうなるでしょうか。
c# - メソッドの汎用インターフェイスのオーバーロード?
2番目のメソッドや多くのキャストに頼ることなく、次のことを行うための優れた一般的な方法はありますか?
ありがとう
c++ - スマート ポインターは、ラップしているオブジェクトへの関数呼び出しを選択的に非表示またはリダイレクトできますか?
特定のオブジェクトが参照されるプロジェクトに取り組んでいます。これは、COM と非常によく似た設定です。とにかく、私たちのプロジェクトには、これらのオブジェクトに対して Add() と Release() を明示的に呼び出す必要性を軽減するスマート ポインターがあります。問題は、開発者がまだスマート ポインターを使用して Release() を呼び出している場合があることです。
私が探しているのは、スマート ポインターから Release() を呼び出すと、コンパイル時または実行時エラーが発生する方法です。コンパイル時間は私には不可能のようです。ランタイム ソリューション (以下のコードを参照) があると思っていましたが、コンパイルもうまくいきません。どうやら、operator->() を使用した後の暗黙的な変換は許可されていません。
とにかく、私が達成しようとしていることを達成する方法を誰かが考えられますか?
助けてくれて本当にありがとうございます!
ケビン
c# - C# ジェネリック オーバーロード - コンパイラが正しい呼び出しを判断できない
ここで使用する正しいオーバーロードをコンパイラが解決できない理由がわかりません。(以下のコード) 適切な Add() のバージョンは 1 つだけです。BigFoo は IFoo であり、T が IFoo である IEnumerable を実装していません。しかし、それはあいまいさを報告することを主張しています。何か案は?2 番目のジェネリック型パラメーターを追加してみました - Add where T : IFoo where U : IEnumerable. ただし、過負荷は、正当な使用であっても完全に無視されます。
ジェネリック型パラメーターをキャストして指定することでこれを回避できることはわかっていますが、その時点で、オーバーロードを持つ目的を無効にしました。オーバーロードに疑問を呈することもできますが、セマンティクスは私には正しいと感じています。クラスで実装している動作は、Add() の両方がオブジェクトをホールセールとしてコレクションに個別のエントリとして追加することです。(2 番目の Add() は AddRange() であってはなりません。)
c# - リフレクションを使用して、オーバーロードされたメソッドのジェネリック バージョンと非ジェネリック バージョンを区別する
リフレクションを使用してジェネリック クラスの非ジェネリック メソッドとジェネリック メソッドを区別するのに問題があります。私が取り組んでいるテストケースは次のとおりです。
c# - 動的型を使用した C# 4.0 でのオーバーロードの解決
C# 4.0 プレビューにまだアクセスできません。しかし、次のケースでオーバーロードされたメソッドを呼び出すときに、C# 4.0 ランタイムは何をするのか、興味があります。一般的なオーバーロードに解決されますか...または特殊なオーバーロードに解決されますか。
c++ - テンプレートC++で演算子()オーバーロード
以下のように演算子をオーバーロードしたい単純なクラスがあります
そして私が持っている他のどこか
誰かがこのエラーで私を助けてくれますか、大いに感謝します。ありがとうございました。
編集:
これはoperator()と関係があります。たとえば、関数を次のように置き換えた場合です。
できます。すべての回答に感謝します。