动态功能进行中

时间:2018-12-07 09:52:35

标签: openedge progress-4gl

什么是进行中的动态函数4gl?我已经尝试了很多,但是我不清楚,请举例说明。我是这种语言的主要人物。

1 个答案:

答案 0 :(得分:3)

动态功能是一种动态调用功能调用的方式。编译器对您的工作知之甚少,因此,如果使用的输入和输出不正确,则会出现运行时错误。

一个根据用户输入运行不同功能的示例:

DEFINE VARIABLE iFunc   AS INTEGER NO-UNDO.
DEFINE VARIABLE iReturn AS INTEGER NO-UNDO.

FUNCTION f1 RETURNS INTEGER :
    RETURN 1.        
END FUNCTION.

FUNCTION f2 RETURNS INTEGER :
    RETURN 2.        
END FUNCTION.

FUNCTION f3 RETURNS INTEGER :
    RETURN 3.        
END FUNCTION.

FUNCTION exp RETURNS INTEGER (INPUT piInt AS INTEGER):

    RETURN piInt * piInt.

END FUNCTION.

REPEAT :
    UPDATE iFunc LABEL "What function?".

    IF iFunc < 1 OR iFunc > 3 THEN LEAVE.
    MESSAGE "Return value: " DYNAMIC-FUNCTION ("f" + STRING(iFunc)) VIEW-AS ALERT-BOX.
END.

该函数获得输入的另一个示例:

FUNCTION exp RETURNS INTEGER (INPUT piInt AS INTEGER):

    RETURN piInt * piInt.

END FUNCTION.


MESSAGE "10 x 10 = " DYNAMIC-FUNCTION ("exp", 10) VIEW-AS ALERT-BOX.

对同一“ exp”函数的调用将编译,但在运行时崩溃。该代码正在发送一个字符串(“ HELLO”)作为输入,函数需要一个整数。

MESSAGE "10 x 10 = " DYNAMIC-FUNCTION ("exp", "HELLO") VIEW-AS ALERT-BOX.