A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹雨 中级黑马   /  2014-7-17 16:34  /  3456 人查看  /  10 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹雨 于 2014-7-20 16:44 编辑

请问大家block与函数的区别,block到底好在什么地方,请各路神仙,给俺小白讲解的简单点

10 个回复

倒序浏览
感觉按老师的意思就是和用Typedef定义一个指向函数的指针一样,能够封装一个函数,代码多起来之后,每次使用到这个方法不需要再重新定义一遍,增加代码的复用性和可读性,这些东西,只有在编一个大型点项目,代码很多的情况下感觉才会深刻,整体更有逻辑性
回复 使用道具 举报
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不但能像函数一样直接调用,还能像变量一样赋值给其他变量。

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

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-7-17 20:26
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不 ...

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

{:3_57:}谢谢大神教导
回复 使用道具 举报
不懂得可以百度的
回复 使用道具 举报
火拳 中级黑马 2014-7-22 09:29:36
7#
这个跟java中的接口有点像,但是又有区别,它不用全部实现其中的方法
回复 使用道具 举报
曹雨 中级黑马 2014-7-22 09:41:09
8#

俺百度过才问的
回复 使用道具 举报
曹雨 中级黑马 2014-7-22 09:42:52
9#
火拳 发表于 2014-7-22 09:29
这个跟java中的接口有点像,但是又有区别,它不用全部实现其中的方法

小白一枚,不懂java啊
回复 使用道具 举报
谁能说的直白一点呢?
回复 使用道具 举报
池莉娘子 来自手机 中级黑马 2015-7-9 00:31:20
11#
fantacyleo 发表于 2014-7-17 20:26
block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不 ...

感觉很nb
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马