在Delphi OOP中,对象何时需要返回值?
我一直在学习Delphi中的OOP。我注意到,有时在类中使用过程,即使正在进行计算,但它不返回值,但有时返回值。我什么时候应该这样做,什么时候不应该 在下图中,在Delphi OOP中,对象何时需要返回值?,oop,delphi,Oop,Delphi,我一直在学习Delphi中的OOP。我注意到,有时在类中使用过程,即使正在进行计算,但它不返回值,但有时返回值。我什么时候应该这样做,什么时候不应该 在下图中,calAge未返回值 让您困惑的是,该函数的代码,Tschool.Accepted显然是不完整的;如果if语句为true,则为函数的结果值指定一个值,否则不指定。这实际上是一个编程错误,因为这意味着如果if语句返回false,则结果值未定义 换句话说,Tschool.Accepted的错误在于它打破了一条基本规则,即通过函数的每个执行路径
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:谢谢你的更正,我已经把最后一段删掉了。我会试着提醒自己这个想法最初是从哪里来的。