gpt4 book ai didi

dart - 向对象添加属性(或至少类似的结果)

转载 作者:行者123 更新时间:2023-12-04 16:44:53 25 4
gpt4 key购买 nike

首先,我正在做的事情的背景。我正在运行一个处理 HttpRequests 的 HttpServer。

    HttpServer.bind(ADDRESS, PORT).then((HttpServer server) {
listenSubscription = server.listen(onRequest);
});

void onRequest(HttpRequest request) {
//handle request here
}

我想为所有这些添加一些日志记录,并且由于这一切的异步性质,想要向请求添加一些识别标记(以便我可以将请求收据与响应相匹配,例如)。 onRequest()里面的代码调用一堆其他函数来做不同的事情(处理 GET 与 POST 请求等),所以简单地在顶部生成一个 id 是一个麻烦的解决方案,因为我必须通过所有其他函数调用传递它。然而,我已经绕过 HttpRequest对象,所以我认为抛出 id 会很好字段,就像在 Javascript 中一样,只是 Dart 不能那样工作。

然后想法转到子类化 HttpRequest类,但转换 HttpRequest反对 onRequest()方法接收似乎比我的需要更多的麻烦和开销。

所以我问,是否有任何惯用的 Dart 方式将一些数据附加到现有对象?如果没有惯用的东西,那么您能想到的最简单的(在代码和运行时复杂性方面)方法是什么?

最佳答案

嗯,有一个 Expando ,但我不知道性能影响。

就像是:

// somewhere top level. Create this once.
final loggingId = new Expando();
...
// inside of onRequest
loggingId[request] = generateId();
...
// later inside log()
print(loggingId[request]);

根据我的理解,Expandos 就像弱引用 map 。

关于dart - 向对象添加属性(或至少类似的结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777984/

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