普通にドキュメントを読めば書いてあることなんだけどなぜか調べるのに手間取ったので、専用の記事を書く。 やりたいこと1つに対応して1つの記事があるというのも人によっては役に立つと思っている。 タイトルで調べたいことの答えが書いてあるとわかるというのは利点だと思う。
以下のコードの実行例 : DPaste - Paste #23990 - pastebin, online compiler and collaboration tool dedicated to D Programming Language
方法1 - opBinary
class test1
{
bool opBinary(string op)(int key)
{
static if (op == "in") return true;
}
bool opBinaryRight(string op)(int key)
{
static if (op == "in") return false;
}
}
ドキュメント
に書いてある方法。opBinary
でtest1 in key
、opBinaryRight
でkey in test1
をオーバーロードできる。
この方法は二項演算子全般をオーバーロードでき、与えられた演算子に応じて処理を変えたり文字列Mixinできたりする。
方法2 - opIn (非推奨)
class test2
{
bool opIn(int key)
{
return true;
}
bool opIn_r(int key)
{
return false;
}
}
In式のオーバーロードがしたいだけならこちらのほうがわかりやすいと思う。ドキュメントにないなと思って調べたら どうやらD1の書き方らしい。 将来サポートされる保証はないとのことなので、執筆時点で動くけれど使わないほうが良いのだろう。