Proprio ieri ho deciso di iniziare ad apprendere il linguaggio di programmazione Haxe dopo aver utilizzato Actionscript 3 negli ultimi anni. Oggi ho esplorato i tipi astratti e mi sono reso conto che sembrano molto diversi dalle classi astratte in Java. Sto iniziando a cogliere un po 'di quello che fanno, ma non sono sicuro di quali abstracts siano usati. Cosa costituisce l'uso corretto degli abstract in Haxe e quando dovrei favorirli rispetto alle classi?Uso corretto degli abstract
Ad esempio, di seguito è una definizione incompleta per un tipo di numero complesso utilizzando un tipo astratto. Dovrei preferire questa o solo una classe ordinaria?
abstract Complex({real:Float, imag:Float}) {
public function new(real:Float, imag:Float) {
this = { real: real, imag: imag };
}
public function real():Float { return this.real; }
public function imag():Float { return this.imag; }
@:op(A + B)
public static function add(lhs:Complex, rhs:Complex):Complex {
return new Complex(lhs.real() + rhs.real(), lhs.imag() + rhs.imag());
}
public function toString():String {
return real() + " + " + imag() + "i";
}
}
Questo primo punto elenco ha fatto davvero clic per me! Ora capisco perché sono chiamati "abstract" (: –