我有一個MATLAB類,它使用類方法專門索引類數據。我有興趣重載end(obj,k,n)方法,以便將索引表達式寫入此方法很容易,但我已經重載了此函數以用於subsref(obj,s)。MATLAB OOP:傳遞給類方法時如何調用最終函數
可能有人請向我解釋如何MATLAB調用end方法如下所示:
>> obj = myClass; obj.myIndexMethod(1:end)
我有一個MATLAB類,它使用類方法專門索引類數據。我有興趣重載end(obj,k,n)方法,以便將索引表達式寫入此方法很容易,但我已經重載了此函數以用於subsref(obj,s)。MATLAB OOP:傳遞給類方法時如何調用最終函數
可能有人請向我解釋如何MATLAB調用end方法如下所示:
>> obj = myClass; obj.myIndexMethod(1:end)
end
被實現爲功能ind = end(obj, k, n)
。 k
是包含end
的表達式的索引,並且n
是該表達式中的索引的總數。
因此,舉例來說,當你調用a(1,end,1)
,k
是2,因爲end
在參數2,n
是3,因爲有3個參數。
ind
作爲索引可以代替end
在表達式中返回。
是的,我已經理解在索引表達式中使用它時應該如何工作。我不明白的是,當你將它作爲函數參數的一部分傳遞時,它是如何被調用的。 – benjamminbrown
正如我在我原來的問題中所說的那樣,在索引到我的課程時,我已經超負荷地正常工作。 – benjamminbrown
'end'是一種僅用於索引表達式的方法。在另一個上下文中使用它是沒有意義的,比如方法的參數,但是如果你這樣做,它仍然以相同的方式工作。如果(而不是如上所述的'a(1,end,1)'),你調用'a.myMethod(1,end,1)',MATLAB會將'k'作爲2和'n'作爲3傳入' '''結束'方法。如果'end'方法是內置的,它將像上面那樣返回'ind',如果你重載了它,它將返回你告訴它的任何東西。 –
是[文檔](https://www.mathworks.com/help/matlab/matlab_oop/object-end-indexing.html)不夠? – excaza
該文檔充分說明了在調用'obj(1:end)'時會發生什麼。不,它不能解釋當你將'end'作爲類方法參數的一部分時會發生什麼。 – benjamminbrown
爲了澄清,'myIndexMethod'是我的課程的一種方法,而不是一個屬性。 – benjamminbrown