相关疑难解决方法(0)

块和堆栈

我知道在堆栈中创建了块.但是,由于我对堆栈和局部变量知之甚少,我无法理解为什么我应该将块移动到堆中以获得预期的结果.直观地,我觉得块代码块在堆栈中只有1个实例,这段代码引用了i3次局部变量.如果我将它复制到堆,它将有3个不同的实例,每次它将i在复制过程中捕获3个不同的值.但我真的想更多地了解堆栈中的块代码,堆和引用局部变量.

for (int i=0; i<3; i++)
    b[i] = ^{ return i;};
for (int i=0; i<3; i++)
    printf("b %d\n", b[i]());
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c-blocks

9
推荐指数
1
解决办法
1246
查看次数

Javascript:关闭循环?

我想做以下事情:

for (var i = 0; i < 10; ++i) {
    createButton(x, y, function() { alert("button " + i + " pressed"); }
}
Run Code Online (Sandbox Code Playgroud)

这个问题是我总是得到最终值,i因为Javascript的闭包不是按值.
那么我怎么能用javascript做到这一点?

javascript closures anonymous-function

5
推荐指数
2
解决办法
863
查看次数