2013-10-22 46 views
3

我在MATLAB writen一類像下面的錯誤:太多的輸入參數從類方法

classdef sizeInfo 
properties 
end 

methods 
    function [row column] = getSize(m) 
     [row column] = size(m); 
    end 
end 
end 

當我使用這個類的getSize功能,它總是報告一個錯誤象下面這樣:

s=sizeInfo 
[r c]=s.getSize(data) 
Error using sizeInfo/getSize 
Too many input arguments. 

任何人都知道爲什麼?

+1

什麼是'data'?如果你輸入一個標量,你會得到什麼? –

回答

2

類函數的第一個參數始終是對象本身的引用,因此function [row column] = getSize(m)是一個不帶參數的函數,m是隱式傳遞的引用。

classdef sizeInfo 
properties 
end 

methods 
    function [row column] = getSize(obj,m) 
     [row column] = size(m); 
    end 
end 
end 

一個建議:仔細閱讀文檔。在學習Java,C++和python之後,我期望理解oop。 Matlab一次又一次讓我驚喜。

+0

+1,但爲什麼投訴?傳遞給自己的引用與Python的做法沒有什麼不同......? –

+0

我不是在抱怨這種行爲,但曾經嘗試過實現一個不會被'evalin('base','clear all')破壞的單例模式,而不使用java?有時幾乎不可能調試爲什麼你的代碼在客戶環境中不起作用。 – Daniel

+1

將其定義爲靜態方法更具可讀性 –

1

對於這個定義的getSize(這並不需要的類的實例訪問),你應該把它定義爲Static

methods(Static) 
    function [row column] = getSize(m) 
     [row column] = size(m); 
    end 
end