初始化功能重要吗?

时间:2015-11-30 09:36:00

标签: function delphi initialization

我的老师说初始化一个函数很重要。我知道你为什么要初始化一个变量,但是不明白你为什么要用一个函数做这个。

function f(n: integer):integer;
begin
    f := 0; //what my teacher wants me to do
    Result := n + 1;
end;

1 个答案:

答案 0 :(得分:3)

在Delphi中,函数Result未定义,除非您为其设置特定值。因此,您必须在函数中的某个位置初始化/设置函数Result

在您的具体示例中,初始化并不重要,因为只有一个执行路径可以使用f := n + 1;设置值

此外,Delphi编译器可以识别从不使用第一行中分配的值并显示警告消息(取决于版本和警告设置):H2077: Value assigned to ‘Result’ never used

function f(n: integer):integer;
begin
    Result := 0; // not important because it will be set with next line
    Result := n + 1;
end;

在更复杂的函数中,您可以拥有更多的执行路径,并且必须确保每个函数都设置了函数结果。有时,将函数结果初始化为某个默认值会更简单,更安全。

function f(n: integer):integer;
begin
    Result := 0; // this is important because if n <= 0 Result will be undefined
    if n > 0 then Result := n + 1;
end;

当然,你可以在上面写上

function f(n: integer):integer;
begin
    if n > 0 then Result := n + 1
    else Result := 0;
end;

无需预先进行初始化。但是,必须为函数中的每个可能的执行路径设置函数结果。

另外,使用函数名来设置函数值是过时的技术。最好使用Result

一个重要的注意事项。不同的语言对返​​回/设置功能结果有不同的规则。没有“一个统治所有人”。请记住,这是一个非常语言的问题。