問題タブ [operator-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 投票する
13 に答える
8340 参照

c# - 無限再帰なしで '==' 演算子のオーバーロードで null をチェックするにはどうすればよいですか?

以下は、== 演算子のオーバーロード メソッドで無限再帰を引き起こします。

null をチェックするにはどうすればよいですか?

0 投票する
17 に答える
181047 参照

java - Java が演算子のオーバーロードを提供しないのはなぜですか?

C++ から Java に移行すると、明らかに未回答の質問は、なぜ Java に演算子のオーバーロードが含まれていないのかということです。

Complex a, b, c; a = b + c;よりもはるかに単純ではありませんComplex a, b, c; a = b.add(c);か?

演算子のオーバーロードを許可しないための有効な引数である、これには既知の理由がありますか? その理由は恣意的なものですか、それとも時間の経過とともに失われたものですか?

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

c# - 等しい演算子を書くときにnullを処理するための最良の方法

重複の可能性:
無限再帰なしで'=='演算子のオーバーロードでnullをチェックするにはどうすればよいですか?

オブジェクトの==演算子をオーバーロードするとき、私は通常次のように記述します。

反対するためにダウンキャストしない場合、関数はそれ自体に再帰しますが、より良い方法がないかどうか疑問に思う必要がありますか?

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

ruby - Ruby が特定の演算子のオーバーロードのみを許可する理由

Ruby では、他の多くの OO プログラミング言語と同様に、演算子はオーバーロード可能です。ただし、オーバーロードできるのは特定の文字演算子のみです。

このリストは不完全かもしれませんが、オーバーロードできない演算子の一部を次に示します。

0 投票する
9 に答える
31038 参照

c# - 参照型の 2 つのインスタンスを比較するための「ベスト プラクティス」とは何ですか?

最近これに遭遇しました。これまで、2 つの参照型に実際に同じデータが含まれているかどうか(つまり、同じように見える 2 つの異なるインスタンス)を確認するために、等価演算子 ( == ) および/またはEqualsメソッドを喜んでオーバーライドしてきました。

自動テスト (参照/期待データと返されたデータの比較) に慣れてきたので、これをさらに使用しています。

MSDN のコーディング標準ガイドラインのいくつかを調べているときに、それを勧める記事に出くわしました。これで、記事がこれを言っている理由を理解しました(それらは同じインスタンスではないため)が、質問には答えていません:

  1. 2 つの参照型を比較す​​る最良の方法は何ですか?
  2. IComparableを実装する必要がありますか? (これは値型のみに予約する必要があるという言及も見ました)。
  3. 私が知らないインターフェースはありますか?
  4. 私たちは自分自身を転がすべきですか?

どうもありがとう^_^

アップデート

私はいくつかのドキュメントを読み間違えたようです (長い一日でした)

参照型を実装している場合、型が Point、String、BigNumber などの基本型のように見える場合は、参照型で Equals メソッドをオーバーライドすることを検討する必要があります。ほとんどの参照型は、 Equals をオーバーライドする場合でも、等価演算子をオーバーロードしないでください。ただし、複素数型など、値のセマンティクスを持つことを目的とした参照型を実装している場合は、等値演算子をオーバーライドする必要があります。

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

c++ - 「new」演算子を介してクラスが割り当てられないようにするにはどうすればよいですか? (自分の RAII クラスが常にスタックに割り当てられるようにしたいのです。)

RAII クラスが常にスタックに割り当てられるようにしたいと思います。

「new」演算子を介してクラスが割り当てられないようにするにはどうすればよいですか?

0 投票する
10 に答える
214684 参照

python - 引数の型に基づいて __init__ メソッドをオーバーロードする方法は?

リストであるデータと呼ばれるメンバーを持つクラスがあるとしましょう。

たとえば、ファイル名(リストを初期化するためのデータを含む)または実際のリストでクラスを初期化できるようにしたいと考えています。

これを行うためのあなたのテクニックは何ですか?

を見て型を確認するだけ__class__ですか?

私が見逃しているかもしれないトリックはありますか?

私は、引数の型によるオーバーロードが簡単な C++ に慣れています。

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

c# - .NETジェネリックにおけるオーバーロードされた演算子制約の解決策

減算演算子などの演算子をオーバーロードした型のみを受け入れるジェネリックメソッドが必要な場合はどうすればよいですか。インターフェイスを制約として使用しようとしましたが、インターフェイスで演算子のオーバーロードを設定できません。

これを達成するための最良の方法は何ですか?

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

c++ - C++ での名前空間と演算子のオーバーロード

特定の名前空間でライブラリを作成する場合、その名前空間のクラスにオーバーロードされた演算子を提供すると便利なことがよくあります。(少なくとも g++ では) オーバーロードされた演算子は、ライブラリの名前空間のいずれかに実装できるようです。

またはグローバル名前空間

私のテストでは、どちらも正常に動作しているようです。これら 2 つのオプションに実際的な違いはありますか? どちらのアプローチが良いですか?

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

c# - C# 拡張メソッドによる演算子のオーバーロード

StringBuilder拡張メソッドを使用して、演算子のオーバーロードを C#クラスに追加しようとしています。具体的には、与えられたに対して、と同等になりStringBuilder sbたいです。sb += "text"sb.Append("text")

の拡張メソッドを作成するための構文は次のとおりですStringBuilder

blahに拡張メソッドを正常に追加しますStringBuilder

残念ながら、演算子のオーバーロードは機能していないようです:

他の問題の中でも特に、キーワードthisはこのコンテキストでは許可されていません。

拡張メソッドを介して演算子のオーバーロードを追加できますか? もしそうなら、それについて行く適切な方法は何ですか?