是否可以在 Progress-4GL 中创建常量?
Is it possible to create constants in Progress-4GL?
下午好,
是否可以在 Progress-4GL 中创建常量?
有人问过同样的问题 here,但那里的问题是基于面向对象的编程(我没有这样做)。
ABL 中没有 constant
关键字。
创建常量值的最简单方法是使用静态属性。这些在任何代码中都可用,甚至是程序代码。
class ConstantValues:
define static public PI as decimal initial 3.14159 get.
end class.
您可以添加私有 setter 并在静态构造函数中执行赋值,而不是 initial
值。
如果您不能或不想使用这种方法,可以使用预处理器。如果您需要共享这些值,请在 includes 中定义预处理器并在您的程序中使用它们(甚至 类)。
但对我来说,如果您要创建新的常量值,那是比需要做的更多的工作。
即使不是常量并且可能很老派,您也可以定义可以作为常量工作的预编译器语句。
有可能是全局 (&GLOBAL-DEFINE
) 而不是全局 (&SCOPED-DEFINE
)
还可以取消定义、检查定义和其他基本内容。
这些是在编译时定义的,因此当程序 运行.
时它们不能动态更改
&SCOPED-DEFINE const1 1
&GLOBAL-DEFINE const2 hello
DISPLAY {&const1} "{&const2}".
下午好, 是否可以在 Progress-4GL 中创建常量?
有人问过同样的问题 here,但那里的问题是基于面向对象的编程(我没有这样做)。
ABL 中没有 constant
关键字。
创建常量值的最简单方法是使用静态属性。这些在任何代码中都可用,甚至是程序代码。
class ConstantValues:
define static public PI as decimal initial 3.14159 get.
end class.
您可以添加私有 setter 并在静态构造函数中执行赋值,而不是 initial
值。
如果您不能或不想使用这种方法,可以使用预处理器。如果您需要共享这些值,请在 includes 中定义预处理器并在您的程序中使用它们(甚至 类)。
但对我来说,如果您要创建新的常量值,那是比需要做的更多的工作。
即使不是常量并且可能很老派,您也可以定义可以作为常量工作的预编译器语句。
有可能是全局 (&GLOBAL-DEFINE
) 而不是全局 (&SCOPED-DEFINE
)
还可以取消定义、检查定义和其他基本内容。
这些是在编译时定义的,因此当程序 运行.
时它们不能动态更改&SCOPED-DEFINE const1 1
&GLOBAL-DEFINE const2 hello
DISPLAY {&const1} "{&const2}".