Alternative syntax to __block?
我对
"Variables in the defining scope are read-only by default when used in a block. If you need to change the value of such a variable, you can use a special syntax:
1 2 3 4 5 6 7 8 9 | int count = 0; float cumulativeValue = 0.0; UpdateElements( a, N, ^(float element){ |count, cumulativeValue| float value = factor * element; ++count; cumulativeValue += value; return value; } ); |
In this example, count and cumulativeValue are modified inside the block, so they are included in comma-separated list of shared variables at the beginning of the block scope.
这个语法看起来更清晰,我假设您可以修改您没有声明但仍在范围内的变量。但是,我在其他任何地方都没有看到这种情况,Xcode编译器不喜欢我的基本块。这是合法的语法吗?
真的。很久没见过这种语法了。
这是块开发过程中探索的各种句法结构之一。它最终被拒绝了,因为它在声明意图时太不精确,结果的行为会令人困惑。
考虑具有三个块的作用域,其中两个块通过
此外,它还将使编译器实现更加困难。C语言的传统是变量存储类型在声明时是固定的。支持这种语法会打破这种期望。
因此,决定使用类似于
谢谢你的邀请。错误已归档,文档最终将被修复和/或删除。
语法受到smalltalk的启发,当然,术语"block"也是如此。
正如bbum指出的那样,标记decl站点更为诚实的w.r.t.非块使用,并且在建模时更符合c,因为它最终成为一个新的(c)对象"持续时间"。
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1451.pdf