我是Dart语言的新手,但想找到下一个问题的答案。 如果我创建没有输入参数的全局变量和函数。
num myVar = 0;
void IncrMyVar() { ++myVar; }
然后在下面的main
中声明函数列表,并将IncrMyVar
添加为元素之一。
List<Function> a = new List<Function>();
a.add(IncrMyVar);
完成所有这些步骤后,我想调用列表a
for(Function foo in a)
{
foo(myVar);
}
,将面临问题。因为IncrMyVar
不提供输入参数。
所以我的问题是:
1 。
如何检查'foo'可以在函数中提供输入参数?2 。在这种情况下如何更好地获取异常?
3 。是否可以通过“ a.forEach()”调用所有函数列表并以某种方式提供输入参数?
答案 0 :(得分:0)
不清楚问题到底是什么。
也许这就是您要寻找的
num myVar = 0;
void incrMyVar() {
++myVar;
}
void incrMyVar1(num value) {
myVar += value;
}
typedef OneParam<P, R> = R Function(P param1);
void main() {
List<Function> a = new List<Function>();
a.add(incrMyVar);
a.add(incrMyVar1);
for (Function foo in a) {
if (foo is OneParam<num, void>) {
// alternatively inline
// if (foo is void Function(num)) {
foo(myVar);
print('1 param');
} else {
foo();
print('0 param');
}
}
print(a);
}
函数类型与is
检查一起使用,以确定函数是否带有参数。