如何在数组迭代中等待?
How to wait within array iteration?
[1,2,3].do { /* how to wait 1s here? */ }
我正在学习超级对撞机。我找到了 SimpleNumber.wait 函数,但我很快了解到它在 "normal" 函数中不起作用,只能在某些 "different" 类称为 Routines 的函数中起作用。
我特意停下来问这个问题:有没有一种简单的方法可以在 someArray.do
构造的每次迭代中暂停给定的时间? "simple way" 我的意思是不需要学习十几个新概念和经历范式转变的东西。
注意:我知道我最终需要学习整个巨大的关于 supercollider 中的例程、任务和其他排序机制的书,但是 现在 我只想玩 "Mary Had A Little Lamb" 并称它为新手的一天,而不必学习 所有,然后我才能让任何事情发生。
这可能吗?
需要例程才能使用 .wait / .yield 功能。当你打电话时3.wait
,你是在告诉某处的时钟等待 3 秒,然后从你中断的地方继续。为此,您需要与时钟通信,并且需要可以停止和启动的东西(执行某些功能的例程)。
您要执行的操作的 complete 语法为:
Routine({
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}).play(AppClock);
上面创建了一个带有函数的例程(你的 1、2、3 循环),然后在时钟(AppClock,标准时钟)上播放它。
但是,函数的 .fork
方法是 shorthand 用于执行上述操作(即创建例程并播放):
{
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}.fork();
[1,2,3].do { /* how to wait 1s here? */ }
我正在学习超级对撞机。我找到了 SimpleNumber.wait 函数,但我很快了解到它在 "normal" 函数中不起作用,只能在某些 "different" 类称为 Routines 的函数中起作用。
我特意停下来问这个问题:有没有一种简单的方法可以在 someArray.do
构造的每次迭代中暂停给定的时间? "simple way" 我的意思是不需要学习十几个新概念和经历范式转变的东西。
注意:我知道我最终需要学习整个巨大的关于 supercollider 中的例程、任务和其他排序机制的书,但是 现在 我只想玩 "Mary Had A Little Lamb" 并称它为新手的一天,而不必学习 所有,然后我才能让任何事情发生。
这可能吗?
需要例程才能使用 .wait / .yield 功能。当你打电话时3.wait
,你是在告诉某处的时钟等待 3 秒,然后从你中断的地方继续。为此,您需要与时钟通信,并且需要可以停止和启动的东西(执行某些功能的例程)。
您要执行的操作的 complete 语法为:
Routine({
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}).play(AppClock);
上面创建了一个带有函数的例程(你的 1、2、3 循环),然后在时钟(AppClock,标准时钟)上播放它。
但是,函数的 .fork
方法是 shorthand 用于执行上述操作(即创建例程并播放):
{
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}.fork();