旧界面和默认关键字
Old interface and default keywords
我在 2 年前的 dart 代码中遇到了以下内容
interface BindingConverter default IdentityBindingConverter {
BindingConverter();
Object convertFromModel(Object value);
Object convertToModel(Object value);
}
class IdentityBindingConverter implements BindingConverter {
Object convertFromModel(Object value) => value;
Object convertToModel(Object value) => value;
}
我知道 interface 关键字被删除了,应该使用 abstract 代替,但是 default 关键字是什么?是与还是扩展或其他东西,默认实现可能?
"default implementation class" 是一种将构造函数从接口转发到实现 class' 构造函数的方法。
现在没有接口,所有 classes 都可以将构造函数转发给它们的任何子classes。
您使用 factory Foo.bar(baz, qux) = SubFoo.bar;
语法单独转发每个构造函数。
abstract class BindingConverter {
// Forwards the arguments to IndentityBindingConverter's unnamed constructor.
factory BindingConverter() = IdentityBindingConverter;
Object convertFromModel(Object value);
Object convertToModel(Object value);
}
class IdentityBindingConverter implements BindingConverter {
Object convertFromModel(Object value) => value;
Object convertToModel(Object value) => value;
}
我在 2 年前的 dart 代码中遇到了以下内容
interface BindingConverter default IdentityBindingConverter {
BindingConverter();
Object convertFromModel(Object value);
Object convertToModel(Object value);
}
class IdentityBindingConverter implements BindingConverter {
Object convertFromModel(Object value) => value;
Object convertToModel(Object value) => value;
}
我知道 interface 关键字被删除了,应该使用 abstract 代替,但是 default 关键字是什么?是与还是扩展或其他东西,默认实现可能?
"default implementation class" 是一种将构造函数从接口转发到实现 class' 构造函数的方法。
现在没有接口,所有 classes 都可以将构造函数转发给它们的任何子classes。
您使用 factory Foo.bar(baz, qux) = SubFoo.bar;
语法单独转发每个构造函数。
abstract class BindingConverter {
// Forwards the arguments to IndentityBindingConverter's unnamed constructor.
factory BindingConverter() = IdentityBindingConverter;
Object convertFromModel(Object value);
Object convertToModel(Object value);
}
class IdentityBindingConverter implements BindingConverter {
Object convertFromModel(Object value) => value;
Object convertToModel(Object value) => value;
}