OOP Benötigen Sie Hilfe beim Abrufen von Methoden, um Objekte zurückzugeben.Ich arbeite an einer Klasse von Vektoren in JSL. Ich hätte gerne eine Methode, die eine normalisierte Version des Vektors zurückgibt. Unten finden Sie mein Skript und eine Fehlermeldung. Vielen Dank!
Clear Log();
Clear Globals();
Define Class(
"vector",
x = 0;
y = 0;
z = 0;
_init_ = Method( {a, b, c = 0},
x = a;
y = b;
z = c;
);
_show_ = Method( {},
Return( x, y, z )
);
mag = Method( {},
magnitude = Sqrt( x ^ 2 + y ^ 2 + z ^ 2 )
);
normalize = Method( {},
nv = vector(0,0,0);
length = Sqrt( x ^ 2 + y ^ 2 + z ^ 2 );
show(length);
nv:x = x / length;
nv:y = y / length;
nv:z = z / length;
nv;
);
);
bob = New Object( vector( 4, 2 ) );
Show( bob );
bob<<NORMALIZE></NORMALIZE>Name ungelöst: Vektor beim Zugriff oder bei der Bewertung von 'Vektor', Vektor (0, 0, 0)
Re: OOP Brauchen Sie Hilfe beim Abrufen von Methoden, um Objekte zurückzugeben.Ich bin ein Neuling, wenn es um Klassen im Allgemeinen und JMP-Klassen geht. Das funktioniert:
Clear Log();
Clear Globals();
Define Class(
"vector",
x = 0;
y = 0;
z = 0;
_init_ = Method( {a, b, c = 0},
x = a;
y = b;
z = c;
);
_show_ = Method( {},
Return( x, y, z )
);
mag = Method( {},
magnitude = Sqrt( x ^ 2 + y ^ 2 + z ^ 2 )
);
normalize = Method( {},
nv = [0,0,0];
length = Sqrt( x ^ 2 + y ^ 2 + z ^ 2 );
show(length);
nv[1] = x / length;
nv[2] = y / length;
nv[3] = z / length;
Print(char(nv));
nv;
);
);
bob = New Object( vector( 4, 2 ) );
Show( bob );
bob = bob:normalize();
show(bob);
Es gibt eine Methode, um sich selbst zu übergeben. Ich empfehle den JMP Scripting Guide und das Durchsuchen dieser Website nach Klassen.
Re: OOP Brauchen Sie Hilfe beim Abrufen von Methoden, um Objekte zurückzugeben.Georgia,
Danke für deine Antwort. Ich habe die "Klon" -Meldung für Objekte gefunden, mit denen ich eine Kopie des Objekts erstellen und dann normalisieren kann. Ich werde mich weiter umsehen und sehen, ob ich etwas finden kann, wie Objekte direkt aus Methoden zurückgegeben werden können, wie dies im "komplexen" Klassenbeispiel der Fall ist.
John