Sou novo no TCL e estou tentando configurar um loop de recursão simples. O código que tenho funciona até a recursão terminar e então começa a gerar erros. Este é o meu código:
set testNum 0
proc raiseTest { a } {
puts $a
if { $a == 5 } {
puts "Done!"
} elseif { $a != 5 } {
incr a
puts "Going!"
[raiseTest $a]
}
}
[ raiseTest $testNum ]
Quando o proc chega a 5 e termina seu último loop, recebo um erro de nome de comando inválido "" seguido por uma tonelada de erros invocados de dentro e não tenho ideia do porquê. Alguém pode me ajudar?
Duas coisas
elseif {$a != 5}
é redundante, você pode substituí-lo por apenaselse
Para discutir mais detalhadamente o ponto 1, a linha logo após
puts "Going!"
, que diz:Esta linha chama
raiseTest $a
, então por causa dos colchetes, capture a saída dessa chamada (uma string vazia porque nada foi retornado) e use isso como o nome de um proc e chame-o.Aqui está um exemplo:
Dito isto, o código deve ficar assim, sem os colchetes: