Declarando várias funções em Ofelia

Re: Declarando várias funções em Ofelia

por Marcelo Queiroz -
Número de respostas: 0
Primeiro, deixa eu esclarecer que o roteiro da aula prática não requer nenhuma solução sofisticada, a ideia era ter várias cópias das caixinhas com as diversas funções de teste. Assim, quem não quiser gastar tempo deixando a solução mais enxuta, não precisa.

Em relação à sua primeira dúvida, sim, é possível usar mensagens para alterar o comportamento da função. Ao invés de declarar múltiplas funções, o jeito mais fácil seria uma função g que depende de um segundo parâmetro:
function g(x,y);
if y==0 then return x*x;
elseif y==1 then return x^3;
else return x^4;
end;
end;
 
E passando no lugar do y aquele nome especial 'a' que representa o valor da mensagem enviada para o script, analogamente ao que fizemos para controlar a frequência. Declarando a função assim (global) você pode inclusive ter essa definição num script diferente, desde que seja executada antes daquela que vai processar as tabelas.

Quanto à segunda dúvida, existe um objeto em Pd que faz exatamente o que você quer: o [multiplex~] ou [mux~] da biblioteca zexy. Para usá-los, instale o zexy (via deken), inclua essa biblioteca na inicialização (Arquivo->Preferências->Inicialização) e reinicialize o Pd. Também dá para fazer um script em Lua com o mesmo comportamento, mas não quero atropelar a sequência de tópicos que estamos seguindo.