我读过描述,我知道它是一个函数类型的别名.
但我该怎么用呢?为什么要用函数类型声明字段?我什么时候用?它解决了什么问题?
我想我需要一两个真正的代码示例。
发布于 2012-09-22 17:21:13
在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');
}运行上述示例将产生以下输出:
Hello World 2012-09-22 10:19:15.139:你好世界
typedef行表示LoggerOutputFunction接受一个字符串参数并返回void。
timestampLoggerOutputFunction与该定义匹配,因此可以将其分配给out字段。
如果你需要另一个例子,请告诉我。
发布于 2018-04-19 04:22:16
Dart 1.24引入了一种新的ty胡枝子f语法,以支持泛型函数。仍然支持以前的语法。
typedef F = List<T> Function<T>(T);有关详细信息,请参阅https://github.com/dart-lang/sdk/blob/master/docs/language/informal/generic-function-type-alias.md
函数类型也可以内联指定。
void foo<T, S>(T Function(int, S) aFunction) {...}另见https://www.dartlang.org/guides/language/language-tour#typedefs
发布于 2019-05-05 23:49:31
typedef LoggerOutputFunction = void Function(String msg);这看起来比以前的版本要清晰得多。
https://stackoverflow.com/questions/12545762
复制相似问题