【发布时间】:2021-02-20 12:50:18
【问题描述】:
内部过程和函数都接受参数以提供输出。那么使用内部过程而不是函数有什么用呢。
【问题讨论】:
标签: openedge progress-4gl
内部过程和函数都接受参数以提供输出。那么使用内部过程而不是函数有什么用呢。
【问题讨论】:
标签: openedge progress-4gl
当您想要执行一些计算并返回单个值时,使用用户定义的函数。在这方面,它与内置 ABL 函数相同,如 SUBSTRING 或 EXP 函数。将此计算代码放在 FUNCTION 块中,而不是在代码中内联,这样您就可以将它放在一个地方并多次引用它,而不会重复代码。
内部过程也是一段封装的代码,可以完成一些工作,但它更通用。虽然函数必须返回单个值,但内部过程可能有也可能没有输入参数或输出参数。
【讨论】:
此外,函数(如方法)的参数和返回值类型会在编译时进行检查,从而消除稍后运行时的一些潜在问题。
【讨论】:
该问题承认函数和内部过程都允许输出参数,并询问内部过程而不是函数的“用途”。
对我来说,这意味着发帖者一直在考虑使用函数并弃用内部程序,并在问:“如果我这样做会失去什么?”
想到两件事:
有点与 Jean-Christophe Cardot 的观点相反:您将失去一些关于参数列表的自动类型转换和语法灵活性。有些人从消极的角度看待这种灵活性。其他人认为这是积极的。
您需要“前向声明”您的函数或使用动态调用。使用内部过程,您无需在代码前面提供声明即可运行它。
如果您倾向于认为严格的类型检查很有用,那么这些可能并不是您认为丢失的好处。如果您更喜欢更灵活的行为,那么您可能会后悔选择函数而不是内部程序。
【讨论】: