什么是指针语言

  • 本文关键字:语言 指针 callback
  • 更新时间 :
  • 英文 :


我正在努力清楚地理解回调是什么。我看到了这篇文章:what-is-allback-function。回答上述问题的用户8bitjunkie之所以命名回调,是因为它们在指针语言中的使用方式。我最初基于这个名字的假设让我认为指针语言是一种可以直接操纵指针的语言。所以我想知道c++是否是一种指针语言,以及我最初的假设是否不正确;指针语言是什么。据我所知,它似乎不是一个典型的语言不可知论术语。如果是,那么它将被与指针使用相关的结果所覆盖。

回调并不是允许直接操作指针的语言所独有的,但这就是"指针语言"。我将重点回答回调是什么,因为这似乎是您的主要困惑。

回调有Java、Python、JavaScript和许多其他对您隐藏指针的语言。

回调只是一个将在另一个函数结束时执行的函数。一般来说,这对异步任务很有用,因为它允许您以特定的方式响应任务而不会阻塞。

举个例子,我将使用Java——一种具有托管内存的语言,不能直接访问指针。实现回调的更原生的方法是使用函数指针,我认为这就是你的文章关于"指针语言"的意思。但我更愿意一下子向你展示什么是回调,以及如何在没有指针的情况下使用它们,Java就是这样

在这个例子中,我们将有一个这样定义的接口。

public interface CallBack {
   public void onFinished(boolean success);
}

这个回调接口允许我们用预定义的方法声明一个对象,该方法将对成功或失败做出响应。然后,我们可以定义这样的Runnable类。

public class CBObject implements Runnable {
    private CallBack myCallback;
    public CBObject(CallBack myCallback) {
        this.myCallback = myCallback;
    }
    public void run() {
        boolean success = false;
        // do some stuff, set success = true if it works
        myCallback.onFinished(success); // this calls the callback
    }
}

然后,如果我们想使用这个回调,我们会这样做。

public void doSomethingAsynchronous(CallBack callback) {
    CBObject cb = new CBObject(callback);
    Thread task = new Thread(cb);
    task.start();
}

这将异步运行此任务,但允许用户对其成功或失败做出反应。

我希望这能有所帮助!

最新更新