Dの演算子のオーバーロードの方向について私は混乱していましたが、今ではそれが美しいシステムであることを認識しています...もしコアタイプ(int、floatなど)フォローコードを考えてみましょう:それは働いていた場合エレガントな演算子のオーバーロードD
struct Vector {
float X, Y;
void opOpAssign(string op)(Vector vector) {
X.opOpAssign!op(vector.X); // ERROR: no property "opOpAssign" for float
Y.opOpAssign!op(vector.Y); // ERROR: ditto
}
}
これは美しいコードになり、見て、それはすべてのオーバーロードとして+ =、 - =、* =、など。一つの方法で事業者。しかし、あなたが見ることができるように、それは箱の外で動作しません。
テンプレートを使用して解決策を作成しました。これは問題ありません。すべてを「社内」にすることをお勧めします。テンプレートを使用せずにこの作業を行う方法はありますか?私はパフォーマンスの損失がなく、これを行うために必要な状況でモジュールをインポートすることも難しくないので、私はここで気難しく思っています。私はそれが組み込まれていると私は何かを見過ごしているのだろうかと思うだけです。
注:
あなたはここで何をしようとして行うための標準的な方法は、文字列ミックスインを使用することです。もう一度 'static'を繰り返す必要があります。 – Bolpat