Julia 中的回调是什么?我该如何使用它们?

What are callbacks in Julia and how do I use them?

我看到一些不同的文档提到了术语“回调”(Flux.jl 和一些 SciML 包),但不清楚这在 Julia 的上下文中意味着什么。

我知道回调是一个作为参数传递给另一个函数的函数,但它还有更多功能吗?这种范例的用例是什么?

使用回调的一个典型例子是进度条。回调被提供给在某种序列中工作的函数。在序列期间定期调用回调,其中包含有关正在完成的工作的某种信息(在进度条的情况下完成的百分比,它会更新进度显示)。

Flux 可以在每次完成一段训练时调用回调,或者在源代码中的示例中,每 10 秒调用一次回调:

https://github.com/FluxML/Flux.jl/blob/b78a27b01c9629099adb059a98657b995760b617/src/optimise/train.jl#L80-L95