如何创建一个接受具有特定参数的函数作为参数的函数?

How can I create a function which accepts a function with specific parameters as an argument?

我想创建一个接受特定类型参数作为参数的函数。例如:

myFn(Function paramFn) {
    paramFn([1, 2, 3]);
}

如何确保 paramFn 接受 List<int> 作为唯一参数?

这就是 typedefs 的目的,尽管我不确定强模式会强制实施到什么程度。

您可以使用typedef将符号与满足您想要的签名的函数相关联。像

typedef void ParamFn(List<int> l);

myFn(ParamFn f) {
  f('abc');   // compile time error
  f([1,2,3]); // works fine
}

您可以使用 typedef 来定义您想要的签名,如 中所述,或者您可以简单地在参数中内联函数签名:

myFn(void paramFn(List<int> l)) {
  paramFn([1, 2, 3]);
}