在Delphi OOP中,对象何时需要返回值?

在Delphi OOP中,对象何时需要返回值?,oop,delphi,Oop,Delphi,我一直在学习Delphi中的OOP。我注意到,有时在类中使用过程,即使正在进行计算,但它不返回值,但有时返回值。我什么时候应该这样做,什么时候不应该 在下图中,calAge未返回值 让您困惑的是,该函数的代码,Tschool.Accepted显然是不完整的;如果if语句为true,则为函数的结果值指定一个值,否则不指定。这实际上是一个编程错误,因为这意味着如果if语句返回false,则结果值未定义 换句话说,Tschool.Accepted的错误在于它打破了一条基本规则,即通过函数的每个执行路径

我一直在学习Delphi中的OOP。我注意到,有时在类中使用过程,即使正在进行计算,但它不返回值,但有时返回值。我什么时候应该这样做,什么时候不应该

在下图中,
calAge
未返回值


让您困惑的是,该函数的代码,
Tschool.Accepted
显然是不完整的;如果
if
语句为true,则为函数的结果值指定一个值,否则不指定。这实际上是一个编程错误,因为这意味着如果
if
语句返回false,则结果值未定义

换句话说,
Tschool.Accepted
的错误在于它打破了一条基本规则,即通过函数的每个执行路径都应该导致函数的结果被赋值。如前所述,
Tschool.Accepted
违反了规则,因为如果
if…
条件为false,则它不会获得分配的结果值

因此,纠正编程错误的一种方法是在
if…
语句的末尾添加
else
子句,例如

if (Some conditions are true) then
  Result := True
else
  Result := False;
另一种方法效率稍低,但涵盖了所有基础,即将预定义值指定给
Result
,作为函数中的第一条语句,然后如果某些条件适用,将另一个值指定给函数代码中的
Result

顺便说一句,因为
Tschool.Accepted
是一个布尔函数,如果。。。否则…使用这样一个赋值语句

function Tschool.Accepted : Boolean;
begin
  Result := (fdeposit) and (fAge >= 4) and (fAge <= 6);
end;
函数Tschool.Accepted:布尔值;
开始

结果:=(fdeposit)和(fAge>=4)和(fAge我很难理解你想让我们告诉你什么。另外,请不要发布到非网站资源的链接。当然也不要发布你的代码截图。请在这里复制原始代码,并使用代码格式选项。它工作得比较好。当你问durin这个问题时,你的导师说了什么g类?什么@RobKennedy说的。你的指导老师也告诉过你Delphi编译器在编译过程中发出的提示和警告吗?在IDE中,转到Project | Options并查看弹出窗口中的编译器消息选项卡。Delphi中的函数和过程之间存在差异。这里有一些内容需要阅读:每个对象都有内部状态。为了“询问”对象的这种状态,您将在Delphi world中使用函数;如何改变这种状态?这就是过程的作用。因此,基本上,您给对象一些顺序,然后如果需要,您会问“您的新状态是什么”。“问题”(也称为函数)不应该改变内心的状态,哦,问问题不会改变answer@DavidHeffernan:谢谢你的更正,我已经把最后一段删掉了。我会试着提醒自己这个想法最初是从哪里来的。