Недавно я играл с языком D, и у меня есть быстрый вопрос о шаблонах.
Я вставляю символы и строки в существующую строку в коде и придумал эту функцию:
string insert(T)(string s1, T s2, uint position) {
return s1[0 .. position] ~ s2 ~ s1[position .. $];
}
Теперь у меня есть несколько вопросов.
Могу ли я ограничить типы, разрешенные для аргумента s2 (мне нужны только char, wchar, dchar и т. д. и их соответствующие значения массива)?
Есть ли способ определить шаблон, чтобы он автоматически знал, что нужно добавлять, если позиция arg равна 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 .. $]; }
Спасибо