2017-08-26 18 views
0

Dでのデフォルトのパラメータをスキップして、私はFunctionsに着いたときの機能、例えば:私は<a href="https://tour.dlang.org/" rel="nofollow noreferrer">D language tour</a>を通じてつもり

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

Dは、名前付き引数を持っていないではありません。私はあなたがすべてのサブ関数を生成するソリューションを考え出すことができたと思いますが、今のところ共通の解決策は構造体を渡すことです。長期的には、このDIPは面白いかもしれません:https://github.com/dlang/DIPs/pull/71 – greenify

答えて

0

あなたは引数をスキップすることはできませんが、あなたはそれがデフォルトを持って知っていれば、あなたは自動的にそのデフォルト値を供給することができます:

import std.traits; 

...

greet(ParameterDefaults!greet[0], "D"); 
関連する問題

 関連する問題