C'è un modo in Haxe di ottenere l'equivalente dei metodi astratti di Java e delle classi astratte?C'è un modo per dichiarare classi e metodi come astratti in Haxe?
Quello che voglio è
// An abstract class. (Written in a Java/Haxe hybrid.)
abstract class Process<A> {
public function then<B>(f : A -> Process<B>) : Process<B> {
var a : A = go() ;
return f(a) ;
}
abstract public function go() : A ;
}
// A concrete class.
class UnitP<A> extends Process<A> {
var _a : A ;
public function new(a : A) {
_a = a ; }
public override function go() : A { return _a ; }
}
Il più vicino che sono stato in grado di ottenere è quello di definire Process
come interfaccia e per la sua attuazione con una classe concettualmente astratta ProcessA
, che definisce entrambi i metodi; l'implementazione di go
in ProcessA
si blocca semplicemente. Quindi posso estendere le mie lezioni concettualmente concrete a ProcessA.
di Haxe "astratto" è qualcosa di completamente diverso, quindi no, non fuori dalla scatola. La tua soluzione funziona, e forse è possibile con i macro (cosa non è possibile con le macro?). – MSGhero
Bene, la mia soluzione funziona solo in misura limitata. Non vi è alcun avviso in fase di compilazione se dimentico di eseguire l'override di "go" in una classe concreta o se istanziato "ProcessA". –