做外贸有那些网站平台手机黄页怎么找
4.2.1 带结果的Exit例程
我们已经看到,从函数中返回结果所使用的语法与 C 语言家族的语法截然不同。不仅语法不同,行为也不同。为结果(或函数名)赋值并不像return
语句那样终止函数。Object Pascal 开发人员经常利用这一特性,将 Result 用作临时存储空间。例如,与其编写:
efunction ComputeValue: Integer;
varValue: Integer;
beginValue := 0;while ...Inc(Value);Result := Value;
end;
您可以省略临时变量,直接使用Result
。无论Result
在函数终止时具有什么值,都是函数返回的值:
function ComputeValue: Integer;
beginResult := 0;while ...Inc(Result);
end;
另一方面,有些情况下,您可能希望赋一个值并立即退出过程,例如在特定的if分支中。如果需要赋值函数结果并停止当前执行,您必须使用两个单独的语句,给Result
赋值,然后使用Exit
关键字。
如果您记得上一章中“使用Break语句和Continue语句改变程序执行流程”的“FlowTest”示例的代码,这可以被重写成一个函数,将对Break
的调用替换为对Exit
的调用。我在以下代码片段的ParamsTest
示例中进行了这个更改:
function CharInString(S: string; Ch: Char): Boolean;
varI: Integer;
beginResult := False;for I := Low(S) to High(S) doif S[I] = Ch thenbeginResult := True;Exit;end;
end;
在Object Pascal
中,您可以用特殊调用Exit
来替换if
块的两个语句,并传递给它函数的返回值,以一种类似于C语言的return
语句的方式。因此,您可以以更紧凑的方式编写上述代码(也因为使用单个语句可以避免begin-end
块):
function CharInString2(S: string; Ch: Char): Boolean;
varI: Integer;
beginResult := False;for I := Low(S) to High(S) doif S[I] = Ch thenExit(True);
end;
注解: 在
Object Pascal
中,Exit
是一个函数,因此您必须在括号中包围要返回的值,而在C样式语言中,return
是一个编译器关键字,无需括号。