我有一個java對象(我們稱之爲Foo
)與length()
方法。matlab:找到一個java對象數組的長度
在MATLAB中,我想編寫一個接受這些對象數組並使用它的函數。我的問題是編寫循環的常用方法分解:
function doSomething(someArray)
for i = 1:length(someArray)
% do stuff with someArray(i)
end
,因爲在這種情況下MATLAB決定「哦,這是一個Java對象; length(x)
應該被解釋爲x.length()
,因爲它的長度()方法:
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
有沒有辦法來解決這個問題?
我會好奇的知道重載的'length'是否被調用了所有三次,或者只是第三次。你可以嘗試使用[WHICH](http://www.mathworks.com/access/helpdesk/help/techdoc/ref/which.html)來找出正在調用哪個版本的函數,比如'which printLength([ foo])','printLength([foo foo])'等。 – gnovice 2010-06-25 17:23:09
這絕對只是第三次。另一次你有一個多於一個對象的數組,並且MATLAB足夠聰明地知道,哦,它是一個數組,我需要找出它的大小。 – 2010-06-25 17:46:11