下面的代码没有设置返回值,那么返回什么?
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/