まず雛形とテストケースを作ります。名前はreplace.dとします。コンパイル及び実行はrdmd -unittest replace.dで行います。ちなみにこのテストケースはまだ抜けが多いということを覚えておいてください。
module replace; import std.stdio; /* * multiReplace関数のコードを生成します。 */ private string genMultiReplaceCode(string name, string[] repstrs){ return "return \"\";"; } /** * 複数の組を置換します。 * sをrepstrsの奇数の要素の値からその直後の要素の値に置き換えます。 */ string multiReplace(repstrs...)(string s){ mixin(genMultiReplaceCode(s.stringof, [repstrs])); } unittest{ assert(multiReplace!("a","b","c","d")("a") == "b"); assert(multiReplace!("a","b","c","d")("b") == "b"); assert(multiReplace!("a","b","c","d")("c") == "d"); assert(multiReplace!("a","b","c","d")("d") == "d"); assert(multiReplace!("a","aa")("aa") == "aaaa"); assert(multiReplace!("aa","a")("aaaa") == "aa"); assert(multiReplace!("aa","aaa")("aaaa") == "aaaaaa"); assert(multiReplace!("aaa","aa")("aaaaaa") == "aaaa"); assert(multiReplace!("a","a")("a") == "a"); } void main(){ }