J'ai un objet java (appelons-le Foo
) avec une méthode length()
.matlab: recherche d'une longueur d'un tableau d'objets Java
Dans MATLAB, je souhaite écrire une fonction qui accepte un tableau de ces objets et travaille avec. Mon problème est que la méthode habituelle d'écrire une boucle se décompose:
function doSomething(someArray)
for i = 1:length(someArray)
% do stuff with someArray(i)
end
car dans ce cas Matlab décide « oh, c'est un objet Java, length(x)
doit être interprétée comme x.length()
car il a une méthode longueur():
function printLength(someArray)
disp(length(someArray));
...
> foo = %%% get my handle to the Java Foo object %%%
> printLength([foo foo foo])
3
> printLength([foo foo])
2
> printLength([foo])
300000
% foo.length() gets called and returns 300000 or whatever
est-il un moyen de contourner ce problème?
Je serais curieux de savoir si la «longueur» surchargée étaient appelées toutes les trois fois, ou seulement la troisième. Vous pouvez essayer d'utiliser [WHICH] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/which.html) pour savoir quelle version de la fonction est appelée, comme 'quelle longueur d'impression ([ foo]) ',' printLength ([foo foo]) ', etc. – gnovice
c'est vraiment seulement la 3ème fois. L'autre fois, vous avez un tableau de plus d'un objet, et MATLAB est assez intelligent pour savoir, oh, c'est un tableau, j'ai besoin de savoir la taille. –