block学习总结
来源:互联网 发布:三菱plc编程实例详解 编辑:程序博客网 时间:2024/06/06 10:57
Blocks是带有自动变量(局部变量)的匿名函数
- 没有函数名
- 带有^
语法规则如下:
^ 返回值类型 参数列表 表达式
^int (int count) {return count + 1;} //但是block语法可以省略好几个项目。首先是返回值类型。
省略返回值类型时,如果表达式中有return语句就使用该返回值的类型,如果表达式中没有return语句就使用void类型。表达式中含有多个return语句时,所有return的返回值类型必须相同。
如果不使用参数,参数列表也可以省略。
^{printf("Blocks\n");}
返回值类型以及参数列表均被省略的Block语法是大家最为熟知的记述方式吧。
可以使用typedef来声明Block类型 typedef int (^blk_t) (int); 可以通过使用typedef来声明blk_t类型的变量。
截获自动变量值
int main ()
{
int dmy = 256;
int val = 10;
const char *fmt = "val = %d\n";
void (^blk)(void) = ^{printf(fmt, val);};
val = 2;
fmt = "These values were changed. val = %d\n";
blk();
return 0;
}
blocks中,表达式截获所使用的自动变量的值,即保存该自动变量的瞬间值。因为block表达式保存了自动变量的值,所以在执行block语法后,即使改写block中使用的自动变量的值也不会影响block执行时自动变量的值。因此这里打印出来的结果是val = 10
0 0
- block学习总结
- OC学习总结之block、category
- 【iOS学习】五、block方法总结
- iosiOS学习总结----block的简单使用
- ios中block的学习总结
- block总结
- Block总结
- Block总结
- Block总结
- block总结
- BLOCK总结
- Block总结
- block总结
- Block总结
- block 学习
- block学习
- Block学习
- block学习
- Leetcode 26. Remove Duplicates from Sorted Array
- 游戏编程中的人工智能技术一书的附录
- ZK设计原理简述
- Oracle监控的关键指标有哪些
- 深入浅出讲解:php的socket通信_0
- block学习总结
- 使用 Socket 通信实现 FTP 客户端程序
- C++ primer-练习6.22
- LeetCode钻研9 判断链表是否有环
- 位bit 字节byte 字关系
- 游戏编程中的人工智能技术一书的索引
- 漫谈时间和时区
- POJ 1004.Financial Management
- QQ菜单2