Как определить переменную типа "функция"? (используя опциональный набор текста)

В дартсе функции первого класса. Документация говорит нам, что вы можете создать переменную, такую ​​как эта:

var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';

создать функцию с именем "loudify", которая принимает строку и возвращает другую строку.
Если я заранее не знаю, какую функцию я хочу назначить переменной, я могу сделать это так:

// define the variable
var loudify;

// later on set the variable
loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';

Но как мне использовать необязательную типизацию, чтобы позже я знал, что переменная имеет тип "функция" и имеет входную строку и выходную строку? Я хотел бы предложить что-то вроде этого, но это не работает (редактор дротиков говорит мне "неопределенный класс" функция ""):

// this gives a syntax error in the Dart editor
function<String, String> loudify;

Так какой здесь правильный синтаксис?
С Уважением,
Хендрик

1 ответ

Решение

Ты можешь использовать typedef

typedef String OneString(String x);
typedef String OneStringAndInt(String x, int y);

void main() {
  //var f = (String x) => '$x';
  var f = (String x, int y) => '$x$y';
  if(f is OneString) {
    print(f('bla'));
  } else {
    print(f('bla', 10));
  }
}
Другие вопросы по тегам