我正在浏览D language tour,当我到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 ','
}
我已经查看了How to enter by-name argument to a function in D?,所以我知道你不能按名称传递参数,除此之外找不到任何提及这样的功能,所以要求确保我没有不要错过任何东西,互联网上有一个明确的答案。
如果在默认值可用时无法跳过传递参数,那么避免重复默认值的最佳做法是什么?
答案 0 :(得分:0)
您不能跳过参数,但如果您知道它有默认值,则可以自动提供该默认值:
import std.traits;
...
greet(ParameterDefaults!greet[0], "D");