我知道Dart mixin不能擴展其他類。但是,是否有某種方法可以通過某種不使用擴展的方式創建兩個mixin組合?例如,請考慮下面的代碼Dart:無擴展名的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必須是招待員,而是因爲我想用SmallTalkerMixin作爲一個mixin,它不能擴展GreeterMixin。不幸的是,這意味着我在任何地方都將SmallTalkerMixin作爲混音使用,我還必須將GreeterMixin作爲混音使用。
換句話說,有沒有辦法使用上面的代碼來實現以下目標?
abstract class SmallTalkerGreeterMixin implements SmallTalkerMixin, GreeterMixin{
sayHello(String person) => print("Hello $person");
makeSmallTalk(String person){
sayHello(person);
print("The weather looks good");
}
}
我不同意(這不能回答這個問題)。這不是我希望的答案,但我問了一個是/否的問題,並沒有得到任何迴應。沒關係。我建議它不會添加任何更多的Gunter的 - 但來自其他來源的驗證永遠不會是一件壞事:) – DomJack
我已經闡述了更多的答案。答案仍然是「不」。如果/當這種變化,我會成爲第一個使用該功能的人:) – lrn