Progress4gl的内部过程和函数之间的区别?

问题描述

两个内部过程和函数都接受参数以提供输出。那么使用内部过程代替函数有什么用。

解决方法

当您要执行一些计算并返回单个值时,将使用用户定义的函数。在这方面,它与内置ABL功能相同,例如SUBSTRING或EXP功能。将此计算代码放在FUNCTION块中而不是内联代码中,可以将它放在一个位置并多次引用,而无需重复代码。

内部过程也是封装的一段代码,可以完成某些工作,但是它具有更多用途。虽然函数必须返回单个值,但是内部过程可能具有也可能没有输入参数或输出参数。

https://docs.progress.com/category/openedge-archives

,

还在编译时检查函数(如方法)的参数和返回值类型,从而在以后的运行时消除了一些潜在的问题。

,

该问题承认函数和内部过程都允许OUTPUT参数,并询问内部过程而不是函数的“用途”。

对我来说,这意味着发布者正在考虑始终使用函数并弃用内部程序,并问:“如果这样做,我会失去什么?”

想到两件事:

  1. Jean-Christophe Cardot的观点相反:您将失去一些自动的类型转换和参数列表的语法灵活性。有人从负面角度看待这种灵活性。其他人则认为这是积极的。

  2. 您需要“转发声明”您的函数或使用动态调用。使用内部过程,您可以运行它而无需在代码中更早地声明。

如果您倾向于认为严格类型检查很有用,那么这些可能不是您认为丢失的好处。如果您喜欢更灵活的行为,那么您可能会后悔选择功能而不是内部过程。