我正在尝试将 OSC 消息绑定松散地耦合到处理它们的函数:
f = {|msg| msg.postln};
OSCFunc({|msg, time, addr, recvPort| f(msg)}, '/2/push1')
我认为这很简单。我可以在任何时候替换 f ,因此随意处理来自路径的消息/2/push1
。
但是当我点击按钮(发送带有路径的消息/2/push1
)时,我收到一条错误消息:
Message 'f' not understood.
所以我猜f
在调用中声明的函数范围内有不同的含义OSCFunc
。我想它有不同的Environment
?
我还尝试将函数放入常规变量中:
(
var myFunction = {|msg| msg.postln};
OSCFunc({|msg, time, addr, recvPort| myFunction(msg)}, '/2/push2');
)
但这会导致相同的错误。
有没有解决的办法?当然,我不必OSCFunc
每次都在其中放置整个函数体吗?