我的代码有一些属于我无法修改的第三方类的对象的句柄。此类重载 eq
以便与其像 ==
的内置版本那样比较句柄是否指向同一个对象,而是根据输入对象的值进行不同的比较,无论是否给定两个句柄相同的对象与否。
我明确地想检查两个句柄是否指向同一个对象。我想也许 builtin
会救我。但是 builtin('eq',A,B)
只会导致错误:
好像 builtin
只喜欢“纯”函数,而 handle.eq
是 handle
类的一个特殊方法,区别于对纯函数进行操作的内置函数 eq
。
使用 eq
使用类名显式调用 handle.eq(A,B)
也不起作用 - 这会产生错误
奇怪的是,使用相同的语法 ThirdPartyClass.eq(A,B)
调用重载会产生不同的错误:
因此,我不清楚 handle.eq(A,B)
是否也必须解释为对静态方法的调用。但至少以这种确切的形式,它似乎不是调用(重载)常规方法的可行途径。
那么我是否已经被这门课的作者非常不体贴的设计选择所结束?或者有什么方法可以访问被如此肆无忌惮重载的父类(super class)的方法?或者实际上,一种从头开始实现 handle.eq
功能的方法(尽管这是 MATLAB 的内置函数之一,其实现在 m 代码中不可见)?
最佳答案
遍历 list of public methods for handle
导致了一种在这种情况下可行的解决方案。由于 le
和 ge
在此类中未重载,因此表达式 A <= B & A >= B
与 A == B
对没有 eq
重载的句柄类的结果相同。
关于matlab - 是否可以检查重载 eq 的类的句柄相等性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58921487/