當我試圖使用MATLAB handle objects作爲MATLAB containers.Map中的關鍵值時,問題就出現了。如何獲取MATLAB句柄對象的ID?
ld(h1, h2)
定義了句柄對象的線性順序,所以對於使用句柄對象作爲映射的鍵值應該沒有限制,但只允許使用整數或字符串類型。
此問題的解決方法可能是檢索處理對象的實際ID(地址)(基本上在ld
函數中進行比較)。
所以問題是:如何獲得一個句柄對象的ID?
發現了一種解決方法可以在靜態成員函數使用持久變量來完成。
在這種情況下,您應該繼承基類中的所有類,如下所示。
classdef object < handle
properties (GetAccess = 'public', SetAccess = 'private')
id
end
methods (Access = 'protected')
function obj = object()
obj.id = object.increment();
end
end
methods (Static, Access = 'private')
function result = increment()
persistent stamp;
if isempty(stamp)
stamp = 0;
end
stamp = stamp + uint32(1);
result = stamp;
end
end
末
你可能是不是'ld',而是關係運算符'lt',即'lower then'? – Mikhail
是米哈伊爾,這是一個錯字。 – Vahagn