有点初学者,所以请耐心听我说。我正在写一些代码来试验shred sporking和移除,但遇到了一个问题。以下是我的代码的一部分:
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());
}
}然而,在这种情况下,我得到了错误"undefined variable '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());
}
}但是,这会导致错误"cannot remove: no shred with id 0...“。我不明白为什么s.id()会是0?第一个if语句中的阻塞不应该将s.id()定义为散列的id吗?我似乎无法克服这一点。
谢谢,
凯文·金
发布于 2018-07-31 03:58:40
Shred s的作用域是while循环体。您将在循环的每次迭代中创建一个新的Shred变量。它们是不同的参考。将变量声明(在本例中为Shred s)放在while循环之外。
https://stackoverflow.com/questions/51598066
复制相似问题