跳过D中的默认参数

时间:2017-08-26 11:17:33

标签: parameter-passing default d

我正在浏览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?,所以我知道你不能按名称传递参数,除此之外找不到任何提及这样的功能,所以要求确保我没有不要错过任何东西,互联网上有一个明确的答案。

如果在默认值可用时无法跳过传递参数,那么避免重复默认值的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

您不能跳过参数,但如果您知道它有默认值,则可以自动提供该默认值:

import std.traits;

...

greet(ParameterDefaults!greet[0], "D");