如何理解回调函数(转载+整理)

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件



作者:常溪玲
链接:https://www.zhihu.com/question/19801131/answer/13005983
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个行为是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)



作者:no.body
链接:https://www.zhihu.com/question/19801131/answer/27459821
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

A程序猿写了一个比较大小的方法

bool bigger(int a,int b){
    if(a>b) return true;
    return false;
}

B程序猿,想要比较大小,所以调用了A的方法

int a = 1 , b = 2;

if(bigger(a, b)){
    print("a>b");
}else{
    print("b>=a");
}

毫无疑问,会输出b>=a,可B程序猿心中想的是,a是第一名,b是第二名,应该a>b ,可见这与比较算法不一致,A程序猿为了让B可以使用自己的库,又想满足B的需求,则会将比较函数改写,用到回调函数:

bool CompareTwo(int a, int b,  Func<int,int,bool> funcCompareMethod){  
      bool bResult =  funcCompareMethod(a,b);//A程序员写的代码调用了B程序员传过来的比较思想
     return bResult;
}

此时B程序员在使用A程序员的函数时,传入的,即为回调函数,回调函数会在合适的时候被调用,以完成A程序员的比较函数。

作者:牛掰是怎么形成的
链接:https://blog.csdn.net/qq_33060405/article/details/78381274
来源:CSDN

发布了12 篇原创文章 · 获赞 2 · 访问量 3336

猜你喜欢

转载自blog.csdn.net/qq_41642615/article/details/101311859
今日推荐