void Function()在Dart中做什么?

时间:2019-03-29 18:35:07

标签: dart

我对飞镖很陌生,想知道这个“包装”功能到底能做什么吗? 就像使用“ connectUnits(userRepo)”的普通函数一样被调用:

void Function(
    Store<AppState> store,
    dynamic action,
    NextDispatcher next,
  ) connectUnits(
    UnitsRepository unitsRepository,
  ) {
    return (store, action, next) {
      unitsRepository.units().listen((units) {
        store.dispatch(LoadUnitsAction(units));
        next(action);
      });
    };
  }

谢谢! 迈克尔

1 个答案:

答案 0 :(得分:2)

功能是Dart中的一等公民。您的示例定义了一个名为connectUnits的函数,该函数返回带有签名void Function(Store<AppState> store, dynamic action, NextDispatcher next)的函数。

为了更好地理解,您的代码与以下代码相同:

// define a kind of function
typedef MyFunction = void Function(Store<AppState> store, dynamic action, NextDispatcher next);

MyFunction connectUnits(UnitsRepository unitsRepository) {
  return (store, action, next) {
    unitsRepository.units().listen((units) {
      store.dispatch(LoadUnitsAction(units));
      next(action);
    });
  };
}