JMP-Klassenmethoden behandeln Argumente als KlassenmitgliederHallo Mitarbeiter
Ich wollte anfangen, JMP-Klassen beim Skripting zu verwenden, stieß aber auf ein unglückliches Verhalten: Wenn Argumente an eine Methode übergeben werden, werden die Argumente so behandelt, als wären sie Klassenmitglieder, was Klassen fast unbrauchbar macht, da das Argument für die Methode davon abhängt, ob a Klassenmitglied verwendet diese Variable bereits. Ich habe keine Möglichkeit gefunden, das Senden einer globalen oder hier: Variablen an die Methode zu erzwingen. Ich glaube es ist ein Bug. Der folgende Code reproduziert dieses Verhalten:
define class ("aClass",
varA = .;
aMethod=method({someVar},
varA = someVar;
show(someVar);
)
);
obj=new object(aClass());
varB=3;
obj:aMethod(varB);
varA=4;
obj:aMethod(varA);
obj:aMethod(::varA);
Da varA sowohl eine globale Variable als auch eine Metod-Variable ist, erhält "aMethod" im obigen Beispiel nur 3 und nicht 4 im Argument. Das Verhalten wird also durch die Interaktion zwischen internen Klassenmitgliedsnamen und globalen Variablennamen beeinflusst.
Mit freundlichen Grüßen,
Thomas
SkripterstellungBetreff: JMP-Klassenmethoden behandeln Argumente als KlassenmitgliederUnd ein paar Beiträge mit Klassen:
So verwenden Sie Klasse definieren
Funktionale Programmierung mit JSL-Objekten
Betreff: JMP-Klassenmethoden behandeln Argumente als KlassenmitgliederIch stimme zu, es sieht aus wie ein Fehler.@EvanMcCorkle @Audrey_Shull
Eine Problemumgehung besteht darin, den Member-Variablennamen das Präfix m_ voranzustellen. Ich habe dieses Präfix oder eine Variation lange Zeit verwendet, um jedem, der den Code liest, zu helfen, zu verstehen, wann er sich eine Member-Variable ansieht.