Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在Dart中将变量转换为函数/方法指针?(代表?)_Function_Methods_Casting_Dart - Fatal编程技术网

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

Function 在Dart中将变量转换为函数/方法指针?(代表?),function,methods,casting,dart,Function,Methods,Casting,Dart,假设我有一个映射类型,其中存储函数/方法,如下所示: Map triggerHandler={ “x”:(t)=>你好(t) }; 现在,我接下来要做的是声明这些映射值的类型是函数 我总能做到这一点: Map triggerHandler={ “x”:(t)=>你好(t) }; 但这无助于阻止程序员在映射值中加入非函数x'可以是字符串或整数 我之所以要这样做,是因为我有一个函数,它只需要接受带有函数作为值的映射。调用“x”的数组键是由triggerHandlerx在它是函数时完成的,而不是t

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

Map triggerHandler={
“x”:(t)=>你好(t)
};
现在,我接下来要做的是声明这些映射值的类型是函数

我总能做到这一点:

Map triggerHandler={
“x”:(t)=>你好(t)
};
但这无助于阻止程序员在映射值中加入非函数x'可以是字符串或整数

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

似乎最合乎逻辑的方法是将值的类型设置为函数。例如,给映射一个类型转换值'delegate':

Map triggerHandler={//注意,这不起作用
“x”:(t)=>你好(t)
};
在Dart中,正确的方法是什么?(如果有办法的话)
谢谢。

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

Map triggerHandler={
“x”:(t)=>你好(t)
};
typedef int SomeName(SomeType arg1);
映射触发器处理程序={
“x”:(t)=>你好(t)
};

太棒了!真不敢相信我以前从未遇到过,听说过他们,但从来都不知道他们做了什么。我明天考试,谢谢!(另外,我注意到当你编辑我的帖子时,你可以使用正确的颜色编码?如果我知道怎么做的话,我会给你发一条私人信息,但是你是如何做到的?是否值得开始一个主题/问题本身?干杯)很高兴听到这是你在寻找的。如果答案解决了你的问题,你应该接受这个答案,这样每个人都能看到它被解决了。谢谢。你可以通过在你的问题/答案中的某处添加`来给自己上色。如果你忘记了语法,点击前面问题中的编辑按钮,你可以在那里看到它。