跳过 D 中的默认参数
Skip a default parameter in D
我正在经历 D language tour and when I got to Functions 开始想知道是否有一种方法可以在调用函数时跳过默认参数,例如:
import std.stdio;
void greet(string greeting = "Hello", string subject = "World")
{
writefln("%s %s", greeting, subject);
}
void main()
{
greet();
greet("Howdy");
greet("Hello", "D"); // duplicating default "Hello"
// greet(, "D"); // Error: expression expected, not ','
}
我已经看过 ,所以我知道您不能按名称传递参数,除此之外找不到任何提及此类功能的信息,所以询问只是为了确保我没有遗漏任何内容,并且在互联网上的某个地方有明确的答案。
如果在默认值可用时无法跳过传递参数,避免重复默认值的最佳做法是什么?
您不能跳过一个参数,但如果您知道它有一个默认值,您可以自动提供该默认值:
import std.traits;
...
greet(ParameterDefaults!greet[0], "D");
我正在经历 D language tour and when I got to Functions 开始想知道是否有一种方法可以在调用函数时跳过默认参数,例如:
import std.stdio;
void greet(string greeting = "Hello", string subject = "World")
{
writefln("%s %s", greeting, subject);
}
void main()
{
greet();
greet("Howdy");
greet("Hello", "D"); // duplicating default "Hello"
// greet(, "D"); // Error: expression expected, not ','
}
我已经看过
如果在默认值可用时无法跳过传递参数,避免重复默认值的最佳做法是什么?
您不能跳过一个参数,但如果您知道它有一个默认值,您可以自动提供该默认值:
import std.traits;
...
greet(ParameterDefaults!greet[0], "D");