使用什么样的Variadic功能?

Bya*_*kun 1 d variadic-functions

我想编写一个可变参数函数,它应该有1个参数,它不是string类型的可选参数,第二个字符串是可选的.我已经阅读了关于可变函数的语言规范,但考虑到D的许多选项,我想知道哪个是我问题的合适解决方案.

另外我应该如何使用强制转换和指针来复制指向的字符串void* _argptr(字符串在D中不可变的事实让我困惑).

编辑:我想要的是:

string foo (string nonopt, ...) { /*code*/ }

//...
string a = "x@a.t", b = "a.t";
auto s = foo(a);
auto s2 = foo(a, b);
Run Code Online (Sandbox Code Playgroud)

Jon*_*vis 7

你所要求的并没有听起来有些变化.您确切地知道应该有多少个参数 - 1或2.在这种情况下,只需对第二个参数使用默认参数.例如

void func(string required, string optional = null) {}
Run Code Online (Sandbox Code Playgroud)

如果你想要的是string后跟未知数量的字符串,那么你可能想要做类似的事情

void func(string required, string[] optional...)
Run Code Online (Sandbox Code Playgroud)

另一方面,如果你想要的是string接下来是各种类型的未知数量的参数,那么你想要的是一个可变参数模板.

void func(T...)(string required, T optional) {}
Run Code Online (Sandbox Code Playgroud)