O comando
Return tem um significado especial dentro de funções: além de retornar a execução para a linha da chamada da função, ele transforma a chamada em um resultado matemático.
Então execute o código simplificado abaixo e veja o que acontece:
Code: Select all
msgbox % 5 + RESOLVER()
Return
RESOLVER()
{
Return 9
}
Como a função RESOLVER() retorna o valor matemático 9, o resultado de
5 + RESOLVER() se torna 14 (e é por isso que a msgbox exibe 14).
Então se utilizarmos uma chamada a uma função que retorna um valor em uma expressão com o operador
:=, o que teremos é que o valor do resultado será inserido dentro de uma variável. Por isso a linha
Resultado := get_Cath(A_index) do código anterior está simplesmente inserindo o resultado retornado pela função get_Cath() dentro da variável
Resultado.
Sendo assim, o que ocorre no código é que: nas iterações do loop em que a imagem for encontrada, a variável Resultado se transformará em 1 e com isso a condicional
If (Resultado = 1) se tornará verdadeira, exibindo o tooltip.
Creio que ficou um pouco difícil entender o código pelo fato de que ele não é testável sem que as condições ideais (imagens encontradas) ocorram, além de que o tooltip não tem um delay que o torne visível. Para entender melhor a lógica código anterior, removi o ImageSearch e coloquei um delay. Veja como agora o return 1 dita quais iterações do loop vão se transformar em tooltips:
Code: Select all
#Persistent
Loop 10
{
Resultado := get_Cath(A_index)
If (Resultado = 1)
{
ToolTip, A imagem %A_Index%.png foi encontrada.
}
Sleep 500
}
Return
get_Cath(corpse)
{
If ((corpse = 3) OR (corpse = 5) OR (corpse = 7))
{
Return 1 ; Este valor retorna ao lugar onde ocorreu a chamada da função (as chamadas podem ser colocadas dentro de expressões matemáticas).
}
}