繁体   English   中英

如何在 Dart 中声明匿名函数的类型?

[英]How to declare type of anonymous functions in Dart?

假设我需要一个 function 传递给一个方法,该方法接受一个字符串并将其转换为双精度:

void strToDouble(String input, Function converter) {
  print('As a double, $input is ${converter(input)}`);
}

(显然是玩具示例)

如何将converter的类型声明为 function 将String变为双倍?

要将您的converter回调声明为接受String并返回doubleFunction ,其类型应为: double Function(String) 因此,您的strToDouble function 将是:

void strToDouble(String input, double Function(String) converter) {
  ...
}

你可以使用typedef

typedef double ConvertStringToDouble(String input);

void main() {
  ConvertStringToDouble cs = (String input){
    return double.parse(input);
  };
  
  strToDouble("29.0", cs);
}
void strToDouble(String input, ConvertStringToDouble converter) {
  print("As a double, $input is ${converter(input)}");
}

这是您要调用的 function 以通过传递字符串和转换器 function 将 output 作为双倍:

  dynamic dynamicConverter (String input, double Function(dynamic input) convert){
    return convert.call(input);
  }

您必须像下面这样使用它:

   double output = dynamicConverter("120", (input) {
      return double.parse(input);
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM