退出(1)或结果之间是否有任何区别:= 1;在德尔福退出?

时间:2017-02-07 10:46:31

标签: delphi

在Delphi中,您可以退出一个函数并给它一个返回值,该值与C / C ++ / Java / C#等中的return关键字非常相似。

Exit(1);

但是,我通常写这样的东西:

Result := 1;
Exit;

选择一个而不是另一个的理由?

1 个答案:

答案 0 :(得分:10)

这两个变体在语义上是相同的,您可以在它们之间自由选择。

如果您需要在不支持Exit(<value>)语法的旧版本编译器上编译代码,那么显然您必须避免使用该变体。

我个人避免使用Exit(<value>)因为我不喜欢有两种不同的方式来分配返回值。我讨厌这样的功能:

function FindValue(Value: Integer): Integer;
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
    if Items[i] = Value then
      Exit(i);
  Result := -1;
end;

这里我们混合两种不同的方法。显然我们可以随时选择使用Exit(<value>),但是我不能这样写这个函数:

function FindValue(Value: Integer): Integer;
begin
  for Result := 0 to Count - 1 do
    if Items[Result] = Value then
      Exit;
  Result := -1;
end;

在我看来,这是增加一项增强功能的时代之一,它会引入程序员的选择但产生的好处却很少。我宁愿Exit(<value>)没有被介绍过。但是,正如我所说,这些是我个人的意见,我相信其他人有不同的看法。