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 петля.

Другие вопросы по тегам