□投稿者/ れお (1回)-(2012/12/12(Wed) 11:01:25)
|
分類:[.NET 全般]
お世話になります。
コードがどうも冗長なので何とかもう少しスマートな方法が無いかお尋ねします。
やっているのは、計算式を文字列で受け取り答えを返す処理です。
例えば
"5.5 + calc_1_1(#1)/2 + calc_2_1(#2)*0.1"
のような式を受け取るとまず calc_1_1(#1) の部分を実数にします。
式に登場する calc_1_1() calc_2_1()は 計算を処理する
Keisanクラスの中のメソッドで他にも以下のような種類があります。
名前には簡単な正規表現で記述できる程度の規則があります。
calc_1_1(double[] val)
calc_1_2(double[] val)
calc_1_3(double[] val)
calc_1_4(double[] val)
calc_2_1(double[] val)
calc_2_2(double[] val)
calc_2_3(double[] val)
calc_2_4(double[] val)
今は以下の様なコードなのですが
Match match = Regex.Match(strSiki, "calc_[1-4]_[1-4]");
if(match.Success)
{
if (String.Equals(match.Value, "calc_1_1"))
{
ans = Keisan.calc_1_1(v);
}
else if (String.Equals(match.Value, "calc_1_2"))
{
ans = Keisan.calc_1_2(v);
}
else if (String.Equals(match.Value, "calc_1_3"))
{
ans = Keisan.calc_1_3v);
・・・・
・・・・
・・・・
・・・・
・・・・
}
延々と else if を続けて記述していて冗長に感じています。
もっとスマートなやり方はないものでしょうか?
開発環境は Windows XP SP3 + VS2005 C# .NET 2.0 です。
.NETのバージョンを上げればこうできるみたいなアドバイスも歓迎です。
どうぞよろしくお願い致します。
|
|