2017-10-17 26 views
0

我有一個MATLAB類,它使用類方法專門索引類數據。我有興趣重載end(obj,k,n)方法,以便將索引表達式寫入此方法很容易,但我已經重載了此函數以用於subsref(obj,s)。MATLAB OOP:傳遞給類方法時如何調用最終函數

可能有人請向我解釋如何MATLAB調用end方法如下所示:

>> obj = myClass; obj.myIndexMethod(1:end) 
+3

是[文檔](https://www.mathworks.com/help/matlab/matlab_oop/object-end-indexing.html)不夠? – excaza

+0

該文檔充分說明了在調用'obj(1:end)'時會發生什麼。不,它不能解釋當你將'end'作爲類方法參數的一部分時會發生什麼。 – benjamminbrown

+0

爲了澄清,'myIndexMethod'是我的課程的一種方法,而不是一個屬性。 – benjamminbrown

回答

0

end被實現爲功能ind = end(obj, k, n)k是包含end的表達式的索引,並且n是該表達式中的索引的總數。

因此,舉例來說,當你調用a(1,end,1)k是2,因爲end在參數2,n是3,因爲有3個參數。

ind作爲索引可以代替end在表達式中返回。

+0

是的,我已經理解在索引表達式中使用它時應該如何工作。我不明白的是,當你將它作爲函數參數的一部分傳遞時,它是如何被調用的。 – benjamminbrown

+0

正如我在我原來的問題中所說的那樣,在索引到我的課程時,我已經超負荷地正常工作。 – benjamminbrown

+0

'end'是一種僅用於索引表達式的方法。在另一個上下文中使用它是沒有意義的,比如方法的參數,但是如果你這樣做,它仍然以相同的方式工作。如果(而不是如上所述的'a(1,end,1)'),你調用'a.myMethod(1,end,1)',MATLAB會將'k'作爲2和'n'作爲3傳入' '''結束'方法。如果'end'方法是內置的,它將像上面那樣返回'ind',如果你重載了它,它將返回你告訴它的任何東西。 –

相關問題