我正在尝试模拟mongo_dart中的.find函数,它正在请求一个我无法解决的返回函数。它有一个类型,然后是另一个类型,然后是名称。什么/如何表达此返回类型。
这显然是合法代码:
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});
};
}
答案 0 :(得分:2)
返回类型为Stream<Map<String, dynamic>> Function([selector])
。
这就是 function 的类型。具有该类型的函数声明可以是:
Stream<Map<String, dynamic>> createMaps([selector s]) async* {
... do something ...
yield map;
... do more ...
}
[selector]
部分意味着该函数必须接受一个类型为selector
的可选位置参数(应该使用大写的 以明确表示它是一种类型) 。
Stream<Map<String, dynamic>>
表示该函数返回流。
因此,由于_test
返回了这样的函数,因此您可以将test编写为:
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)
这是一个满口!)