【发布时间】:2015-01-02 22:32:47
【问题描述】:
我理解 Dart 的 mixin 不能扩展其他类。但是,是否有某种方法可以以某种不使用扩展的方式创建两个 mixin 的组合?例如,考虑以下代码
abstract class GreeterMixin{
sayHello(String person) => print("Hello $person");
}
abstract class SmallTalkerMixin implements GreeterMixin{
makeSmallTalk(String person){
sayHello(person);
print("The weather looks good");
}
}
class Animal{
final int nLegs;
Animal(this.nLegs);
}
class Person extends Animal{
final String name;
Person(this.name): super(2);
}
class SocialPerson extends Person with GreeterMixin, SmallTalkerMixin{
SocialPerson(String name): super(name);
introduceSelf(String person){
makeSmallTalk(person);
print("My name is $name");
}
}
很明显,smallTalker 必须是 greeter,但是因为我想使用 SmallTalkerMixin 作为 mixin,它不能扩展 GreeterMixin。不幸的是,这意味着无论我在哪里包含 SmallTalkerMixin 作为 mixin,我也必须包含 GreeterMixin 作为 mixin。
换句话说,有没有办法只使用上面的代码来实现以下目标?
abstract class SmallTalkerGreeterMixin implements SmallTalkerMixin, GreeterMixin{
sayHello(String person) => print("Hello $person");
makeSmallTalk(String person){
sayHello(person);
print("The weather looks good");
}
}
【问题讨论】: