ChucK - хранение значений идентификаторов sporked клочья
Немного новичка, так терпите меня. Я писал немного кода, чтобы поэкспериментировать с уничтожением и удалением клочков, но столкнулся с проблемой. Вот часть моего кода:
while(hid.recv(msg)) //Hid hid is above
{
if(msg.isButtonDown()) //HidMsg msg is above
{
spork ~ test() @=> Shred @ s; //test is just an empty function
}
if(msg.isButtonUp())
{
Machine.remove(s.id());
}
}
При этом, однако, я получаю ошибку "неопределенная переменная 's'...". Я мог бы сказать, что, поскольку определение 's' происходит только после того, как msg.isButtonDown() имеет значение true, поэтому я попробовал другой метод.
while(hid.recv(msg))
{
Shred s;
if(msg.isButtonDown()) //HidMsg msg is above
{
spork ~ test() @=> s; //test is just an empty function
}
if(msg.isButtonUp())
{
Machine.remove(s.id());
}
}
Однако это приводит к ошибке "невозможно удалить: нет клочка с идентификатором 0...". Я не понимаю, почему s.id() будет 0? Разве в первой инструкции if не должно определяться s.id() как sporked id? Я не могу пройти через это.
Спасибо,
Кевин Ким
1 ответ
Shred s
ограничен телом цикла while. Вы создаете новый Shred
переменная на каждой итерации цикла. Это разные ссылки. Поместите объявление переменной (Shred s
в этом случае) за пределами while
петля.