機械翻訳について

Switch文の使用

条件ロジックが依存する式が多数の異なる値を取る場合があり、異なるコード・ブロックを実行する場合は、switch文を使用してタスクを簡略化します。

次の例に示すように、switch文に単一の引数として渡された式は、各caseブロックの値と比較されます。 最初に一致したcaseブロック内のコードが実行されます。 caseブロック内でbreak文を使用することに注意してください。 このbreak文を含めないと、後続のcaseブロックからコードが実行され、通常はアプリケーションのバグが発生します。

さらに、'A''B'などの特定の値を使用する以外に、'C'..'P'などの値の範囲や['Q','X','Z']などの値のリストを使用することもできます。 switch式は、この例で使用されている文字列に制限されません。任意のオブジェクト型にできます。

def logMsg
def maxDiscount = 0
// warehouse code is first letter of product SKU
// uppercase the letter before using it in switch
def warehouseCode = upperCase(left(SKU,1))
// Switch on warehouseCode to invoke appropriate
// object function to calculate max discount
switch (warehouseCode) {
  case 'A': 
    maxDiscount = Warehouse_A_Discount()
    logMsg = 'Used warehouse A calculation'
    break
  case 'B':
    maxDiscount = Warehouse_B_Discount()
    logMsg = 'Used warehouse B calculation'
  case 'C'..'P':
    maxDiscount = Warehouse_C_through__P_Discount()
    logMsg = 'Used warehouse C-through-P calculation'
    break    
  case ['Q','X','Z']: 
    maxDiscount = Warehouse_Q_X_Z_Discount()
    logMsg = 'Used warehouse Q-X-Z calculation'
    break
  default:
    maxDiscount = Default_Discount()
    logMsg = 'Used default max discount'
}
println(logMsg+' ['+maxDiscount+']')
// return expression that will be true when rule is valid
return Discount == null || Discount <= maxDiscount