普通的旧用户定义函数只能有一个签名。您的函数定义有点“关闭”。您正在使用输入输出参数(这不是“错误”但很奇怪)并且您没有返回值 - 这是错误的。它应该如下所示:
function inc returns integer ( input-output i as integer, addExpression as integer ):
i = i + addExpression.
return i.
end.
过程的数据类型规则稍微宽松一些,并且会自动进行一些类型转换(例如隐含的十进制到整数的转换)。例如,这将支持传递自动舍入的小数:
procedure z:
define input-output parameter i as integer no-undo.
define input parameter x as integer.
i = i + x.
return.
end.
如果将函数创建为类的方法,则可以重载方法签名。
这些方面的东西(未经测试):
class X:
method public integer inc( input-output i as integer, input addExpression as integer ):
i = i + addExpression.
return i.
end.
method public integer inc( input-output i as integer, input addExpression as character ):
i = i + integer( addExpression ).
return i.
end.
end.