Dartlang确实可以获取参数

时间:2018-10-06 15:52:13

标签: dart

我是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()”调用所有函数列表并以某种方式提供输入参数?

1 个答案:

答案 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检查一起使用,以确定函数是否带有参数。