1

openge10.2.bItemObj.clsを使用する

CLASS mystuff.ItemObj :
  METHOD PUBLIC CHARACTER GetItemDesc
  ( INPUT pcOne AS CHARACTER,
  INPUT pcTwo AS CHARACTER,
  INPUT piThree   AS INTEGER ) :

    RETURN pcOne pcTwo pcThree.

END METHOD.

ItemObj.p

USING mystuff.*.
DEFINE VARIABLE rItemObj AS CLASS mystuff.ItemObj NO-UNDO.
rItemObj = NEW mystuff.ItemObj( ).
MESSAGE "One : " rItemObj:GetItemDesc (1)       SKIP(1)
        "Two : " rItemObj:GetItemDesc (1, 2)    SKIP(1)
        "Three : " rItemObj:GetItemDesc (1, 2, 3) VIEW-AS ALERT-BOX INFO.
DELETE OBJECT rItemObj.

これらすべてのステートメントの出力を同じにして、ユーザーが1つだけ入力した場合、他の2つはデフォルトで2と3になり、ユーザーが1と2を入力した場合、3つはデフォルトで3になるようにします。

不一致パラメータエラーを取得せずにこれを行うにはどうすればよいですか?

4

1 に答える 1

3

IIRC Progressは、メソッド定義でオプションのパラメーターを許可しないため、引数の並べ替えごとにメソッド定義を作成するか、動的配列、一時テーブル、カスタムオブジェクトなどのパラメーターとして複数の値を処理するデータ構造を受け入れる必要があります。それを解凍します(ただし、呼び出し元にロジックをプッシュします)。

CLASS mystuff.ItemObj:
  METHOD PUBLIC CHARACTER GetItemDesc (INPUT pcOne   AS CHARACTER,
                                       INPUT pcTwo   AS CHARACTER,
                                       INPUT piThree AS INTEGER):
    RETURN pcOne pcTwo pcThree.
  END METHOD.

  METHOD PUBLIC CHARACTER GetItemDesc (INPUT pcOne   AS CHARACTER,
                                       INPUT pcTwo   AS CHARACTER):
    RETURN GetItemDesc(pcOne, pcTwo, 3).
  END METHOD.

  METHOD PUBLIC CHARACTER GetItemDesc (INPUT pcOne   AS CHARACTER):
    RETURN GetItemDesc(pcOne, "2").
  END METHOD.
END CLASS.
于 2012-04-20T15:13:05.530 に答える