連載
次に、実装していきます。まずは、引数の制限を追加します。 string multiReplace(repstrs...)(string s){ /*static */assert(~repstrs.length & 1, "invalid repstrs.length"); mixin(genMultiReplaceCode(s.stringof, [repstrs])); } バグでstatic assert…
まず雛形とテストケースを作ります。名前はreplace.dとします。コンパイル及び実行はrdmd -unittest replace.dで行います。ちなみにこのテストケースはまだ抜けが多いということを覚えておいてください。 module replace; import std.stdio; /* * multiRepla…
.replace("",">")がうまく最適化される世の中なんて無い。最適化を研究してけばできるのだろうけど、個人的にどのコンパイラも文字列まわりの最適化の実装は遅れてる印象がある。というかあまり聞いたこと無い。ということで黒魔術っぽいmixinで解決しましょ…