应聘与回调函数

来源:互联网 发布:无声鼠标 知乎 编辑:程序博客网 时间:2024/05/16 06:23

关于回调函数的参数由谁设定问题理解起来真的不易,但是要记住,老外发明的东西总能在现实世界找到实体,而不像我们中国的现代人,理论研究得五花八门,实践起来一塌糊涂,为何说中国现代人呢?这是因为中国古人恰恰和现代老外很像,注重实用性,这只是单一一方面,我并没有说老外不注重理论,相反,老外的刨根 究底精神是值得我们学习的,我们应该学习人家那种理论实践两不误的精神,充分负起责任来,而不要仅仅为了一个目的而进行另一个毫不相关的事情,比如:为了挣钱而学java!想要钱吗?想走发财捷径吗?鼓起勇气,偷去,抢去,千万不要亵渎了科学和技术。
正如题目,应聘和回调函数有什么关系呢?理解回调函数要用英文,回调就是:callback,call的意思是“调”吗?我们实际上没有必要一直揪着“回 调”这个概念,不妨就用callback,call作为动词有打电话的意思,back作为介词有向后的意思,表示一个方位或者顺序,我们一般意义上的动词都有个默认的方向,就是front,毕竟时间具有单向性而空间没有,但是空间加上事件就具有了单向性,所谓“事物是向前发展的”,“历史前进的步伐不可阻挡”...,这个front实际指的就是常规的动作方向,发出动作的叫主动方,接受动作的叫被动方,规定从主动方到被动方的方向是front方向,而反过 来从被动方向主动方的方向就是back了。我们看一下应聘的过程,你发简历过去,然后等电话,这个过程中应聘者显然是主动方,公司是被动方(招聘正好相反),你投简历过去是一个front动作,而公司打电话过来是一个back动作,呵呵,要是打电话真的就是call的话,这个动作就是callback 了,可惜打电话真的就是call。这就是应聘的意义。
我们看一下回调函数,回调函数都是系统定义的,用户提供实体函数,然后由系统在合适的时机进行调用,从用户到系统的动作是front动作,从系统到用户是 back动作,如果函数调用可以叫call的话,这就是callback了,可惜函数调用就是call。这就是回调函数的意义。
既然都叫callback,我们不必翻英语词典,仅仅本着老外的原则就可以猜到它们是一样的。你投的简历相当于注册了回调函数并提供了你的信息,回调函数是招聘公司规定的,比如要你填写手机号码,那么这个手机号码就是你注册的回调函数,这手机号码是招聘公司要求的,是它们定义的格式,然后你填在简历上发给 了招聘公司,公司在需要的时候打电话给你相当于调用了你的回调函数,公司到你的方向是back方向,因此就是callback。那么最后一个问题,回调函 数的参数呢?对于应聘,回调函数是打电话,实参就是公司告诉你的具体事情,那么形参呢?无非就是如下几条:
char * 公司地址,char * 我被录取的部门,time_t 我上班的时间...
公 司给你打电话的时间实际上是不确定的,很大的可能性公司就不会给你打电话,我就遇到n的平方次这种事情。这样我们就比较好理解为何很多回调函数不让用户传递自定义参数了,回调函数的参数实际就是在该函数被回调的时机,系统要告诉用户的一些事情或者当前的状态,这些值都是系统提供的,就是说系统想给你什么它 自己知道,比如上述应聘的例子,如果我的简历上写了一些信息,让招聘公司给我打电话时把这些信息再发回来,那么十有八九招聘公司会认为你在逗他们,也就不会给你工作机会了,呵呵。再一个,系统不是你存放参数的地方,它不代理这种功能,如果你把自定义参数在注册的时候就给他了,那么它就必须为你保存着,直到 调用你的回调函数时返还给你,如果回调函数一直没有触发的机会,那么你传入的参数就白白浪费了资源,记住,回调函数的调用是需要触发条件的,如果条件不满足,函数就不会被调用,传递自定义参数的意义不大,呵呵,如果你不够优秀,那么招聘公司根本不会打电话给你的。还有就是回调函数虽然被调时机不确定,但是 一旦被调用,当时的情形却是确定的,语义上也是确定的,这个意义上你传入自定义参数也没有必要,额外增加了语义。但是这不是一定的,如果你自定义的参数就在回调发生时的语义之中,只有在这时,传递用户参数才是合理的,这时举应聘的例子就不合适了,应该举B2B或B2C的例子,或者就是订单以及积分确认的例子,本文就不多说了。

原创粉丝点击