Diciamo che ho il codice come questo:Mixin passare in secondo piano
class A{ foo() => "A";}
class B{ foo() => "B";}
class C{ foo() => "C";}
class Mix extends A with B,C {
foo() => "MIX";
bar() => super.foo();
}
class MessABC = Object with A,B,C;
class MessBCA = Object with B,C,A;
class MessCAB = Object with C,A,B;
void main() {
Mix mix = new Mix();
MessABC mABC = new MessABC();
MessBCA mBCA = new MessBCA();
MessCAB mCAB = new MessCAB();
print("Mix.foo = ${mix.foo()} Mix.bar = ${mix.bar()} \n"
"mABC.foo = ${mABC.foo()} \n"
"mBCA.foo = ${mBCA.foo()} \n"
"mCAB.foo = ${mCAB.foo()} \n");
}
L'uscita
Mix.foo = MIX Mix.bar = C
mABC.foo = C
MBCA .foo = A
mCAB.foo = B
Sull'oggetto mix
posso chiamare sia Mix.foo
e C.foo
con la eccellente(in realtà mi aspettavo A.foo
) Ma si può in qualche modo chiamare A.foo
e B.foo
?
Anche io sono un po 'confuso dal con la semantica. A,B,C
Sembra "enumerazione di un rango" ma l'ordine è importante. E "Dart Editor" non mi avvisa della collisione del nome. Forse posso abilitare questo avvertimento?
Per me sembra qualcosa che ti rende confuso e incline agli errori.
Ora ci si sente ovvio. Grazie :) – JAre