我已经阅读了说明,我知道它是一个函数类型别名.

  • tyecif或函数类型别名为函数类型提供了一个名称,您可以在声明字段和返回类型时使用该名称.将函数类型分配给变量时,tyfinf会保留类型信息.

  • 一百

但是我怎么使用它呢?为什么要用函数类型声明字段呢?我什么时候用呢?它解决了什么问题?

我想我需要一两个真正的代码示例.

推荐答案

DART中tyecif的一种常见使用模式是定义回调接口.例如:

typedef void LoggerOutputFunction(String msg);

class Logger {
  LoggerOutputFunction out;
  Logger() {
    out = print;
  }
  void log(String msg) {
    out(msg);
  }
}

void timestampLoggerOutputFunction(String msg) {
  String timeStamp = new Date.now().toString();
  print('${timeStamp}: $msg');
}

void main() {
  Logger l = new Logger();
  l.log('Hello World');
  l.out = timestampLoggerOutputFunction;
  l.log('Hello World');
}

运行上述示例将产生以下输出:

你好,世界
2012-09-22 10:19:15.139:你好,世界

typedef行表示LoggerOutputFunction接受一个字符串参数并返回void.

Timestamp pLoggerOutputFunction与该定义匹配,因此可以分配给OUT字段.

如果你需要另一个例子,请告诉我.

Dart相关问答推荐

在异步方法中,有没有更优雅的方式在DART中等待!=NULL?

为什么 Dart 的编译器认为代码可能为空,而代码保证它不能为空?

Dart:当两个或多个任务等待同一个 Future 时会发生什么

您如何在元素中设置自定义元素标签的样式?

flutter: 使用提供程序时,状态在热重载时丢失

无法在Flutter中为 TabBarView 设置动态高度

在Flutter中实现像Chanel app一样的自定义滚动?

为什么Dart中的 abs() 函数在没有用括号括起来时返回负数?

如何在 Dart 中设置文本框的值?

如何将圆形边框设置为flutter上的MaterialButton?

如何在 Flutter/dart 中获取一周中特定日期的日期?

为什么使用Dart作为前端开发人员?

摆动中的可滚动导轨

为什么 Dart 有编译时常量?

Dart 2:Future 和 Future 之间的区别

在 Dart 中将类类型作为变量传递

如何提高数据与二进制数据转换的 Dart 性能?

如何在 Dart 中获取文件名?

如何在 base64 中编码 Dart 字符串?

Dart 中的函数重载