gpt4 book ai didi

function - 在 Dart 中将变量转换为函数/方法指针? (代表?)

转载 作者:行者123 更新时间:2023-12-03 02:45:10 25 4
gpt4 key购买 nike

假设我有一个在其中存储函数/方法的 Map 类型,如下所示:

Map triggerHandler = {
'x' : (t) => hello(t)
};

现在,我接下来要做的是声明这些 Map 值的 Type 是函数。

我总能做到这一点:

Map<String, dynamic> triggerHandler = {
'x' : (t) => hello(t)
};

但这无助于阻止程序员将非函数放入 Map 值中。 'x' 可以是字符串或整数。

我想这样做的原因是因为我有一个函数只需要接受以函数作为值的映射。调用 'x' 的数组键是函数时由 triggerHandlerx 完成,而不是 triggerHandler[x]。我还没有测试这是否会导致错误发生,但这在我看来在语义上并不正确。

看起来最合乎逻辑的方法是将值的类型设置为函数。例如给 Map 一个类型转换值 'delegate':

Map<String, delegate> triggerHandler = { // Note, this won't work
'x' : (t) => hello(t)
};

在 Dart 中执行此操作的正确方法是什么? (如果有办法)谢谢。

最佳答案

您可以使用 Function 作为类型,或者如果您还想指定这些函数的参数和返回类型,您可以创建 typedef。

Map<String, Function> triggerHandler = {
'x' : (t) => hello(t)
};
typedef int SomeName(SomeType arg1);

Map<String, SomeName> triggerHandler = {
'x' : (t) => hello(t)
};

关于function - 在 Dart 中将变量转换为函数/方法指针? (代表?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784796/

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