最近 D 言語をいじっていて、テンプレートについて簡単な質問があります。
コード内の既存の文字列に文字と文字列を挿入していて、この関数を思いつきました:
string insert(T)(string s1, T s2, uint position) {
return s1[0 .. position] ~ s2 ~ s1[position .. $];
}
さて、いくつか質問があります。
s2 引数に使用できる型を制限できますか (char、wchar、dchar などとそれぞれの配列値のみが必要です)。
位置引数が0の場合に先頭に追加することを自動的に認識するようにテンプレートを定義する方法はありますか? このようなもの(コンパイルはしませんが、一般的なアイデアを提供します):
string insert(T)(string s1, T s2, uint position) { static if (position == 0) return "" ~ s2 ~ s1; else return s1[0 .. position] ~ s2 ~ s1[position .. $]; }
ありがとう