Frage

Ich habe gerade entdeckt, dass beim Aufruf von Java von Matlab

object.method(arg1,...,argn)

entspricht

method(object, arg1,...,argn)

Das Problem hier ist, habe ich auch eine method.m haben, dass einige Übersetzung von Java in Matlab hat (zB. String[] zu Zelle von Strings konvertieren). Mein method.m sieht aus wie

function result = method(object, arg1,...argn)
  intermediate = object.method(arg1,...argn);
  result = translate(intermediate);

Was geschieht, ist, wenn ich method(object, arg1,...,argn) nennen, ist es die direkte Java Anruf tut, statt meiner mit meinem method.m

Die Lösung ist einfach, nicht einfach die gleiche Methode Namen meiner Java beide Methoden für verwenden und meine .m Dateien. Aber ist es eine andere Möglichkeit? Wie kann ich wissen, welche Methode den gleichen Namen gegeben genannt werden? Gibt es eine Möglichkeit nenne ich method.m anstelle der Java-Methode zu gewährleisten? Es ist einfach, einen Aufruf an die Java-Methode, um sicherzustellen, nur die object.method Syntax verwenden.

Als Randbemerkung, was auch dumm sind die .m Editor Links zu dem method.m auf dem method(object, arg1,...,argn) Anruf, während, wenn es debuggt es die Java-Methode aufruft.

War es hilfreich?

Lösung

Sie können in einige Probleme laufen mit, wie MATLAB nicht Dispatching ...

Wie kann ich wissen, welche Methode die gleichen Namen genannt werden?

Dieser Abschnitt die MATLAB-Dokumentation beschreibt, wie eine Funktion in Fällen gewählt wird, wenn mehrere Funktionen mit dem gleichen Namen sind. Aus der Dokumentation: „Die Funktion Rangfolge bestimmt den Vorrang einer Funktion über eine andere auf der Grundlage der Art der Funktion und seine Position auf dem MATLAB-Pfad.“ Die Bestellung (vom höchsten zum niedrigsten) ist unten angegeben:

  • Subfunktion
  • Privat Funktion
  • Klasse Konstruktor
  • überladene Methode
  • Funktion in dem aktuellen Verzeichnis
  • Funktion an anderer Stelle auf dem Pfad

Die Platzierung Ihres „method.m“ -Funktion wird wahrscheinlich feststellen, ob es aufgerufen wird oder die Java-Methode aufgerufen wird, wenn die „Methode (Objekt, ...)“ mit Syntax.

Gibt es eine Möglichkeit, ich method.m Methode anstelle der Java aufrufen, um sicherzustellen?

Gerade jetzt, ich bin Ihre „method.m“ rate, ist im aktuellen Verzeichnis oder an anderer Stelle auf dem Weg (die beide niedrigsten Vorrang Positionen in sein). Wenn Sie gemacht "method.m" ein Unterfunktion in dem größeren Code nennt es, oder wenn es möglich ist, es in einem privates Verzeichnis , wo es von jeder Funktion aufgerufen werden, die es nennen muss, dann kann es anstelle von get> die Java-Methode, wenn Sie die „Methode verwenden ( Objekt, ...)“Syntax.

Hope, das hilft!

Andere Tipps

hmmmmmmmmm .... Sie könnten versuchen, eine Funktion Griff zu erhalten @method mit und rufen Sie dann feval() auf dem Funktionsgriff.

Das könnte funktionieren, aber ich bin mir nicht sicher ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top