如何在 Dart 中 return 这种疯狂的类型?
How to return this crazy type in Dart?
我正在尝试模拟 mongo_dart 中的 .find 函数,它要求 return 函数,但我无法解决。它有一个类型,然后是另一个类型,然后是名称。我如何表达这种 return 类型。
这显然是合法的代码:
Stream<Map<String, dynamic>> Function([selector]) _test(Invocation realInvocation) {
}
class selector {
}
返回 Stream<Map<String, dynamic>>
会引发错误 - 它说它需要 Stream<Map<String, dynamic>> Function([selector])
求助!我从来没有见过这样的东西,Google 也没什么用。
编辑,感谢 Irn 下面的评论,最终解决方案是这段代码。查看他们的回答和我为澄清所做的评论
Stream<Map<String, dynamic>> Function([dynamic]) _test(Invocation realInvocation) {
return ([selector]) {
return Stream.value({"response":true});
};
}
return 类型是 Stream<Map<String, dynamic>> Function([selector])
。
那是 函数 的类型。该类型的函数声明可以是:
Stream<Map<String, dynamic>> createMaps([selector s]) async* {
... do something ...
yield map;
... do more ...
}
[selector]
部分意味着该函数必须接受一个类型为 selector
的可选位置参数(really 应该大写以明确这是一种类型)。
Stream<Map<String, dynamic>>
表示函数 return 是一个流。
因此,由于 _test
return 是这样的函数,您可以将测试编写为:
Stream<Map<String, dynamic>> Function([selector]) _test(Invocation realInvocation) {
return createMaps; // But should probably use realInvocation for something.
}
(这将使 _test
的类型成为:
Stream<Map<String, dynamic>> Function([selector]) Function(Invocation)
真是一口啊!)
我正在尝试模拟 mongo_dart 中的 .find 函数,它要求 return 函数,但我无法解决。它有一个类型,然后是另一个类型,然后是名称。我如何表达这种 return 类型。
这显然是合法的代码:
Stream<Map<String, dynamic>> Function([selector]) _test(Invocation realInvocation) {
}
class selector {
}
返回 Stream<Map<String, dynamic>>
会引发错误 - 它说它需要 Stream<Map<String, dynamic>> Function([selector])
求助!我从来没有见过这样的东西,Google 也没什么用。
编辑,感谢 Irn 下面的评论,最终解决方案是这段代码。查看他们的回答和我为澄清所做的评论
Stream<Map<String, dynamic>> Function([dynamic]) _test(Invocation realInvocation) {
return ([selector]) {
return Stream.value({"response":true});
};
}
return 类型是 Stream<Map<String, dynamic>> Function([selector])
。
那是 函数 的类型。该类型的函数声明可以是:
Stream<Map<String, dynamic>> createMaps([selector s]) async* {
... do something ...
yield map;
... do more ...
}
[selector]
部分意味着该函数必须接受一个类型为 selector
的可选位置参数(really 应该大写以明确这是一种类型)。
Stream<Map<String, dynamic>>
表示函数 return 是一个流。
因此,由于 _test
return 是这样的函数,您可以将测试编写为:
Stream<Map<String, dynamic>> Function([selector]) _test(Invocation realInvocation) {
return createMaps; // But should probably use realInvocation for something.
}
(这将使 _test
的类型成为:
Stream<Map<String, dynamic>> Function([selector]) Function(Invocation)
真是一口啊!)