在下面的代码中,我希望每个框(图)都有自己的mousedown。 但渲染完所有框后,使用相同的文件,即最后一个读取文件。
for(loc file <- lsFile){
lsBox += box(
onMouseDown(bool (int butnr, map[KeyModifier,bool] modifiers) {
renderFile(file);
return true;
})
);
}
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
for(loc file <- lsFile){
loc tmp = file;
lsBox += box(
onMouseDown(bool (int butnr, map[KeyModifier,bool] modifiers) {
renderFile(tmp);
return true;
})
);
}
闭包捕获文件变量,而不是它的值。所以你slways引用它的最后一个值。 tmp变量是为每次迭代新分配的,因此它没有这个问题。