【发布时间】:2011-09-20 17:54:22
【问题描述】:
当我尝试将MATLAB handle objects 用作MATLAB containers.Map 中的键值时,问题就出现了。
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?