什么是回调机制以及它如何在R中应用

什么是回调机制以及它如何在R中应用,r,R,有人能用更简单的非计算机科学术语向我解释一下R中的回调功能吗(taskCallback,getTaskCallbackNames,taskCallbackManager…等等)?我已经看过R帮助,但是我发现信息有点太抽象了 它的设计目的是什么,用户如何利用它们 如果有人能解释一般概念(用R和其他计算机语言),并用R提供示例,我将非常感激,因为我从来没有真正理解过。它是否与递归函数有关,或者我是否被名称回调误导了?我对R不太了解,因此我无法在此深入研究R的细节。也就是说: 通常,在命令式、过程式和

有人能用更简单的非计算机科学术语向我解释一下R中的回调功能吗(
taskCallback
getTaskCallbackNames
taskCallbackManager
…等等)?我已经看过R帮助,但是我发现信息有点太抽象了

它的设计目的是什么,用户如何利用它们


如果有人能解释一般概念(用R和其他计算机语言),并用R提供示例,我将非常感激,因为我从来没有真正理解过。它是否与递归函数有关,或者我是否被名称回调误导了?

我对R不太了解,因此我无法在此深入研究R的细节。也就是说:

通常,在命令式、过程式和函数式编程语言中(也可能在其他一些范例中),调用函数会一直阻塞,直到该函数完成,并将函数的结果传递给调用方。这通常是一种很好的方法,但是在某些情况下,我们可能会有一些要求,使得这种方法不太可行

对于长时间运行的操作,我们可能不希望阻塞调用方太长时间。根据我们所处的环境,调用方可能无法生成另一个线程,或者可能的线程数可能太少,无法容纳所需的并行调用数,因此以这种同步方式执行长时间运行的操作将带来非常糟糕的体验。JavaScript的单线程模型和频繁调用服务器就是一个典型的例子

因此回调的基本思想是,调用方传入回调对象,而不是在实际处理完成时让被调用函数返回(在OOP中,在其他范例中是类似的,例如回调函数,通常是匿名的,用于函数编程)。被调用的函数将立即返回,释放调用线程来做其他事情。当长时间运行的流程完成时,将调用回调,调用者可以在那里处理长时间运行流程给出的结果

该模式可以稍微通用一点,因此不仅在处理结束时调用回调,而且在处理过程中也会定期调用回调,提供某种状态更新,因此调用方可以例如向用户显示一些反馈(状态栏、估计完成时间等)。另一个常见的添加是调用方在处理任务时取消任务的方法


这是一般原则。也许有人更了解R,可以详细说明R与一般描述的不同之处。

可以找到详细信息和示例

其基本思想不是处理递归,而是为发出到R命令行的每个顶层调用一个或多个函数


在TeachingDemos软件包中有一种用法,
txtStart
和相关函数使用任务回调将每个命令及其结果输出的副本保存到一个外部文件中,创建交互式会话的副本。

感谢您的高层次解释。。我现在对它有了更好的理解…:)什么是“最高级别命令”?你是说用R而不是C写的函数吗?我已经看到了链接中给出的示例,但是我没有看到它的用法(很抱歉,这可能是由于我的无知,而不是文章本身。我相信,如果我能理解为什么/如何使用这些回调机制,这将非常有意义)。。也许,教学演示中的例子可以更好地说明这一概念。。为此干杯……)顶级命令是您在命令提示符下键入的命令,因此
1+1
是顶级命令,但运行一组命令的
for
循环在命令提示符下键入时将是单个顶级命令。尝试链接文档中的示例,并在中键入不同的内容,以查看计数器更改的频率和时间,每个更改都是顶级命令。