使用OpenEdge10.2.b ItemObj.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和3,如果用户输入1和2,则3默认为3。
如何在不出现参数不匹配错误的情况下执行此操作?
发布于 2012-04-20 23:13:06
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.https://stackoverflow.com/questions/10248731
复制相似问题