-1

我写了一个可以递归的方法,但是返回值总是0,即使它在控制台上有一个字符串值:

Func hasItTheThing($s)

$result = StringInStr(...,...)
local $newstring

$newstring = $s

If NOT $result > 0 Then

ConsoleWrite("newstring = " & $newstring & @CRLF)
return $newstring

Else


$newstring = ;Fix something with the string
hasItTheThing($newstring)


EndIf


EndFunc
4

2 回答 2

1

此外,导致始终为零结果的错误:IF 的“Else”分支(如果不是 $result > 0)没有返回。因此,当结果 > 0 时,您的函数会调用自身,但当它返回一个值时,它会被丢弃,并且函数继续退出,不返回任何内容。

修复:

...
Else
    $newstring = ;Fix something with the string
    return hasItTheThing($newstring)   ; <== Added a "return" here
EndIf
EndFunc
于 2016-08-09T15:00:50.547 回答
0

啊,没关系,http ://www.autoitscript.com/wiki/Recursion 回答了这个问题。

我通过将关键字 return 替换为在函数外部声明的局部变量来解决它,并将值设置为此变量。

于 2013-02-17T13:09:58.703 回答