我已经阅读了描述,我明白它是一个函数类型别名。
-
typedef 或函数类型别名为函数类型提供一个名称,您可以在声明字段和返回类型时使用该名称。当将函数类型分配给变量时,typedef 会保留类型信息。
-
http://www.dartlang.org/docs/spec/latest/dart-language-specification.html#kix.yyd520hand9j http://www.dartlang.org/docs/spec/latest/dart-language-specification.html#kix.yyd520hand9j
但我该如何使用它呢?为什么用函数类型声明字段?我什么时候使用它?它解决什么问题?
我想我需要一两个真实的代码示例。
Dart 中 typedef 的常见使用模式是定义回调接口。例如:
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 采用 String 参数并返回 void。
timestampLoggerOutputFunction 与该定义匹配,因此可以分配给 out 字段。
如果您需要另一个例子,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)