簡體   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