1

このコードを 1 時間以上いじって、別の方法で再配置しようとしました。もっと簡単に書く方法はありますか?

   if x is not Number      ;// if x is string
   {
      if y is not Number      ;// x, y both strings
      {
         Eval(x)
         Eval(y)
         return
      }
      else                    ;// x is string, y is Number
      {
         Eval(x)
         Scale(y)
         return
      }
   }
   else if y is not Number    ;// x is Number, y is string
   {
      Scale(x)
      Eval(y)
      return
   }
   else                       ;// both are numbers
   {
      Scale(x)
      Scale(y)
      return   
   }
4

2 に答える 2

7

Eval文字列とScale数字にしたいようです。4 つの明示的なケース (3 つの変数で 8 つになる) の代わりに、各ケースを独立して処理xyます。

if x is Number
    Scale(x)
else
    Eval(x)

if y is Number
    Scale(y)
else
    Eval(y)

または、さらに良いことに、 Eval/Scaleをユーティリティ メソッドにプッシュすることもできます。

ScaleOrEval(z):
    if z is Number
        Scale(z)
    else
        Eval(z)

...そしてそれを使用...

ScaleOrEval(x)
ScaleOrEval(y)

適切なメソッド名を選択すると、ユーティリティ メソッドを作成することでコードが読みやすくなり、コピー アンド ペーストの繰り返しを避けることができます。

于 2010-08-26T08:04:07.030 に答える
2
// First handle x
if x is Number
{
    Scale(x)
}
else
{
    Eval(x)
}

// Then handle y
if y is Number
{
    Scale(y)
}
else
{
    Eval(y)
}

return
于 2010-08-26T08:04:09.107 に答える