gpt4 book ai didi

callback - D:委托(delegate)还是回调?

转载 作者:行者123 更新时间:2023-12-04 23:42:38 25 4
gpt4 key购买 nike

我发现委托(delegate)的概念对我来说很难。我真的不明白为什么我不能简单地将一个函数传递给另一个函数并且需要将它包装到委托(delegate)。我在文档中读到,在某些情况下,我不知道它的名称,而 Delegate 是唯一的调用方式。

但是现在我很难理解回调的概念。我试图找到更多信息,但我不明白它只是调用其他函数还是它是什么。

您能否展示 D 回调的示例并解释它们在哪里可以提供帮助?

import vibe.d;

shared static this()
{
auto settings = new HTTPServerSettings;
settings.port = 8080;

listenHTTP(settings, &handleRequest);
}

void handleRequest(HTTPServerRequest req,
HTTPServerResponse res)
{
if (req.path == "/")
res.writeBody("Hello, World!", "text/plain");
}
&handleRequest是回调吗?它是如何工作的,什么时候开始的?

最佳答案

所以在内存中,函数只是一堆字节。像数组一样,您可以获取指向它的指针。这是一个函数指针。它的类型为 RETT function(ARGST)在 D 中。其中 RETT 是返回类型,ARGST 是参数类型。当然,属性可以像任何函数声明一样应用。

现在委托(delegate)是一个函数指针 上下文指针。上下文指针可以是单个整数(参数)、调用帧(另一个函数内部的函数)或最后一个类/结构中的任何内容。

委托(delegate)与 RETT delegate(ARGST) 处的函数指针类型非常相似。 .它们不可互换,但您可以很容易地将函数指针转换为委托(delegate)指针。

回调的概念是说,嘿,我知道你会知道 X,所以当这种情况发生时,请通过调用此函数/委托(delegate)告诉我有关 X 的信息。

回答您关于 &handleRequest 的问题,是的,它是一个回调。

关于callback - D:委托(delegate)还是回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com