• 回调函数(callback)是什么?


    一个常见的定义:由自己定义、由系统调用的函数,称为回调函数。
    上层/底层的概念:系统提供的,通常称为底层,如Windows SDK的API。自己写的代码,称为上层。一般是上层调用下层,如调用API监视键盘。Callback的特殊之处是,你写的函数,由下层来调用。
    为什么会理解困难:我通常把这原因归为,翻译的“回调”,太烂。语言阻碍了理解。

    一种应用场景:

    你是上层,我是下层。我写函数,你调用。注意,现在我写了一个函数,里面有一个死循环。当然不用担心,这个死循环是从摄像头抓帧的,你随时可以按Esc退出。
    我对抓到的每帧,检测图像里目标。这里假设目标是草莓。所以,问题简化成:【我摘草莓,你吃草莓,我为你服务(调用)】。

    刚开始,你拿到草莓直接鲜吃,所以,把草莓交给【吃草莓】接口;
    后来,你吃不完,想用草莓做酱,所以,把草莓交给【草莓酱】接口;
    再后来,你想把草莓做沙拉,所以,把草莓传给【做沙拉】接口;
    ……

    两个问题:
    1. 你的需求经常变化。
    2. 别人可能用这个摘草莓的接口。

    所以,大家决定商量一下,你别叫(调用)我了,我叫(调用)你吧。
    把你的各种接口交(传递)给我,我摘到草莓(预处理)后,再调你的接口。

    所以,事情变成了:原来,我在下你在上,是通常的传教士;后来觉得麻烦,
    我在上,你在下,变成了观音坐莲。这个特殊,叫做Callback。

    最后:
    如果你也遇到过这种死循环的接口,你会发现,其实传教士根本做不成。因
    为你一旦调用我,我就停不下来了……如何把摘到的草莓扔给你?除了Callback,
    就得是内存共享之类。

    本来是很简单的理解,写出来有点多。照顾非程序员人群,写的更多。总得来说,

    能问这个问题,说明你还没入门,目前这样理解,够了。


    from 知乎

    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834928.html
Copyright © 2020-2023  润新知