黑马程序员技术交流社区

标题: 关于block [打印本页]

作者: 曹雨    时间: 2014-7-17 16:34
标题: 关于block
本帖最后由 曹雨 于 2014-7-20 16:44 编辑

请问大家block与函数的区别,block到底好在什么地方,请各路神仙,给俺小白讲解的简单点
作者: 我是一只小小强    时间: 2014-7-17 19:51
感觉按老师的意思就是和用Typedef定义一个指向函数的指针一样,能够封装一个函数,代码多起来之后,每次使用到这个方法不需要再重新定义一遍,增加代码的复用性和可读性,这些东西,只有在编一个大型点项目,代码很多的情况下感觉才会深刻,整体更有逻辑性
作者: fantacyleo    时间: 2014-7-17 20:26
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不但能像函数一样直接调用,还能像变量一样赋值给其他变量。

block最NB之处在于词法闭包,简单来说,你在一个方法,比如叫print:中定义了一个block,那么这个block中的代码和print:方法中的定义的其他局部变量一起形成了一个封闭的环境(闭包),block中可以直接访问print:方法的局部变量。但如果你定义一个新函数来实现block中的操作代码,然后在print:方法中调用它,那么在新函数中是无法直接访问print:方法中的局部变量的,你必须把局部变量当作参数传递给新函数。显然,这种情况下用block就方便多了

作者: 曹雨    时间: 2014-7-20 16:44
fantacyleo 发表于 2014-7-17 20:26
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不 ...

{:3_62:}财神成码神,膜拜
作者: 曹雨    时间: 2014-7-20 16:47
我是一只小小强 发表于 2014-7-17 19:51
感觉按老师的意思就是和用Typedef定义一个指向函数的指针一样,能够封装一个函数,代码多起来之后,每次使 ...

{:3_57:}谢谢大神教导
作者: 爱情路13号    时间: 2014-7-20 23:55
不懂得可以百度的

作者: 火拳    时间: 2014-7-22 09:29
这个跟java中的接口有点像,但是又有区别,它不用全部实现其中的方法
作者: 曹雨    时间: 2014-7-22 09:41
爱情路13号 发表于 2014-7-20 23:55
不懂得可以百度的

俺百度过才问的
作者: 曹雨    时间: 2014-7-22 09:42
火拳 发表于 2014-7-22 09:29
这个跟java中的接口有点像,但是又有区别,它不用全部实现其中的方法

小白一枚,不懂java啊
作者: huyanpeng    时间: 2015-1-31 23:19
谁能说的直白一点呢?

作者: 池莉娘子    时间: 2015-7-9 00:31
fantacyleo 发表于 2014-7-17 20:26
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不 ...

感觉很nb




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2