間違った用語を検索しただけかどうかはわかりませんが、C# やその他のプログラミング言語で関数のオーバーロードを自動化する可能性があるかどうかを知りたいです。
私が持っているもの:
class A
{
public void plus(int a1, int a2, int a3, int a4 ... int an)
{
...
}
public void plus(int a2, int a3, int a4 ... int a20)
{
set default value for int a1
...
}
public void plus(int a3, int a4 ... int a20)
{
set default value for int a1
set default value for int a2
...
}
... and so on
}
私が欲しいのは、与えられたパラメーターの量を自動的に検出し、欠落している値をデフォルト値に置き換えるだけの関数です... n 個のパラメーターに対して n 個の関数を入力する必要はありません。
私の頭に浮かぶ唯一の可能性は、次のように、デフォルト値を使用する必要がある場所に null 値を与えることです。
class A
{
public void plus(int a1, int a2, int a3, int a4 ... int an)
{
if(a1 == null)
a1 = 1;
if(a2 == null)
a2 = 2;
...
}
}
しかし、それはこれらの関数用語を使用できるという私の要件をサポートしません:
plus(1,2,3);
plus(1,2,3,4);
plus(1,2);
plus(1,2,3,4,5,6);
PS: 私の実際の問題 (投稿が許可されているかどうかはわかりません) では、それは単なるプラス操作ではありません。ツールを開始するためのパラメーターを作成します。
public string buildParameters(int a, int b, string c, double d (heheheh), Class C, Object D, etc...) {...}
いいえ、これを解決する別のアイデアがありました:
class Builder
{
public string buildParameters(int p1, int p2, string p3, double p4, char p5)
{
// Build String
// build build
// End
return "blabla";
}
public string buildParameters(int p1, int p2, string p3, double p4)
{
return buildParameters(p1, p2, p3, p4, 'c');
}
public string buildParameters(int p1, int p2, string p3)
{
return buildParameters(p1, p2, p3, 0.00, 'c');
}
public string buildParameters(int p1, string p3)
{
return buildParameters(p1, 2, p3, 0.00, 'c');
}
}
どのパラメーターが指定されているかどうかに応じて...最初の試行ほど書くことはありませんが、それでも多くのテキスト-.-