1
使用openedge 10.2.b ItemObj.clsIn Progress-4GL如何設置對象以接受不同數量的輸入?
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
如何做到這一點沒有得到一個不匹配參數錯誤?
你會如何處理這個問題?我真的不想支持同一個對象的三個不同版本。使用運輸對象有優勢嗎? – Bill 2012-04-20 15:32:12
動態陣列/臨時表的解決方案是可能不是非常好,因爲IIRC你只能有針對整個數據結構的單一類型(例如,僅'INTEGER'或'CHARACTER',沒有混合)。你可以做一些愚蠢的喜歡只是使用'Object'作爲類型,並根據它在何種程度上在運行時垂頭喪氣值到特定的類型,但是... EWW。我會使用我90%的時間提供的解決方案,在其他需要複雜性的情況下,創建一些類型的「選項」對象並接受它。最好的長期解決方案是找到比使用Progress更好的語言。 ;) – 2012-04-20 15:44:04
另外,如果這個代碼將永遠只能在Windows上運行,那麼您可能能夠通過使用CLR橋寫的東西'.NET'更加靈活。但我沒有任何經驗,對不起。 – 2012-04-20 15:46:44