1

有点初学者,所以请多多包涵。我正在编写一些代码来试验 shred sporking 和 remove,但遇到了一个问题。这是我的代码的一部分:

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() 为真之后,所以我尝试了一种不同的方法。

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());
    }
}

但是,这会导致错误“无法删除:没有 id 为 0 的碎片...”。我不明白为什么 s.id() 会是 0?不应该在第一个 if 语句中将 s.id() 定义为 sporked id 吗?我似乎无法克服这一点。

谢谢,

凯文金

4

1 回答 1

0

Shred s范围为 while 循环的主体。您正在Shred循环的每次迭代中创建一个新变量。它们是不同的参考。将变量声明(Shred s在这种情况下)放在while循环之外。

于 2018-07-30T19:58:40.313 回答