为什么函数一开始就要返回一个值?(100分)

  • 主题发起人 主题发起人 loding
  • 开始时间 开始时间
L

loding

Unregistered / Unconfirmed
GUEST, unregistred user!
//删除字符串中特定的字符
Function DeleteCharacterInString(InputCharacter,InputString: String): String;
Var CharPos : Integer;
Begin
Result := InputString
((注意:为什么一开始就要返回一个值?))
While True Do
Begin
CharPos := Pos(InputCharacter,InputString);
If Not (CharPos = 0) Then
Begin
Delete(InputString,CharPos,1);
End
Else
Begin
Break;
End;
End;
Result := InputString;
End;
 
其实是无所谓的,有些时候为了编程方便,才这样作。
 
你上面的函数开始赋值就没有用。
 
是为了防止一个警告,说你没有定义返回值,无关紧要的。
 
下面这个初始赋值能方便一些。下面的例子仅仅为了举例说明问题,
省去了注释掉的两句话
function checkvalue(l_value:Integer):boolean;
begin
result:=false;
if l_value<0 then
begin
// result:=false;
exit

end;

if l_value>100 then
begin
// result:=false;
exit

end;

result:=True;
end;
 
没作用。
//Delete(InputString,CharPos,1);
这个函数不能删除字符串,并不实用。
 
While True Do
begin
....
end;
这句什么意思?true永远是真,就永远要做。岂不是没用了吗?
 
Break退出的
 
是为了更确保函数的正确性
to loding:
While True Do
begin
....
end;
这句什么意思?true永远是真,就永远要做。岂不是没用了吗?

是有用的,后然不是跳出来了吗?其实你也可以这样用While 1=1 Do

 
退出哪个if 还是 wile。
 
完全没必要!!!
Function DeleteCharacterInString(InputCharacter,InputString: String): String;
Var CharPos : Integer;
Begin
while (CharPos:= Pos(InputCharacter,InputString) 〉 0 do
Delete(InputString,CharPos,Length(InputCharacter))

Result := InputString;
End;
 
不好意思!
Function DeleteCharacterInString(InputCharacter,InputString: String): String;
Var CharPos : Integer;
Begin
while (CharPos:= Pos(InputCharacter,InputString)) 〉 0 do
Delete(InputString,CharPos,Length(InputCharacter))

Result := InputString;
End;
 
我等着收分啦
 
我问的问题有点乱了,对不起。
如果我们不去循环它,就不用跳出。何必呢?
true永远是真,不会去做else的事情,怎么跳出?

 
>>true永远是真,不会去做else的事情,怎么跳出?

If Not (CharPos = 0) Then 去做else的事情啊。
 
可以认为是给返回值一个初值,后续语句如不操作返回结果,则返回的即为初值.
 
后退
顶部