delphi - Delphi 函数(或 Pascal)的默认返回值

标签 delphi pascal

下面的代码没有设置返回值,那么返回什么?

Function MyFunction : Integer;  
begin  
end;

最佳答案

返回值未定义;它可以是任何东西。

因此,这是一个错误。1, 2

事实上,编译器会警告您:

[dcc32 Warning]: W1035 Return value of function 'MyFunction' might be undefined.

<小时/>

1 我认为这是显而易见的,但显然不是:我的意思是,当函数未设置 Result 变量时,这是一个错误。因此,如果 Delphi 程序员编写的函数在某些情况下无法为 Result 赋值,那么该程序员就犯了一个错误,应该尽快修复它。我并不是说 Delphi 语言或 Delphi 编译器存在错误。

2 嗯,它不一定是一个错误,但几乎总是如此 - 至少在正常的代码中是这样。异常(exception)情况是,如果函数的约定明确指出返回值在某些特定且可测试的条件下未定义。例如,我们都知道 TryXToY 习惯用法,例如 TryStrToInt(const S: string; out Val: Integer): Boolean。如果可以进行转换,该函数将返回 True 并分配 Val。如果不是,该函数将返回False,并且Val很可能未定义。理论上,您可以编写一个具有相反行为的函数,其中结果的“定义”由 out 参数给出。然而,这对于大多数程序员来说是非常违反直觉的,所以这不是一个好主意。

关于delphi - Delphi 函数(或 Pascal)的默认返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416867/

相关文章:

delphi - 如何使 Delphi 中的事件只发生一次?

Delphi - 包含单元 'Classes' 但找不到函数 'FindComponent'

java - 如何使三角函数代码更高效

delphi - 是最大的点。两条线?

delphi - 如何创建只读属性?

windows - 适用于 Windows 的 Turbo Pascal : Copy output to clipboard?

installation - 如何在 Inno Setup Scripts 中将字符串版本值转换为数值?

delphi - Pegasus Imaging PrintPro ActiveX 控件在 Delphi 窗体上放置时出现错误

lazarus - 类属性 : Error: Illegal symbol for property access

delphi - 如何让 TTreeView 在选择节点时显示该节点?