gpt4 book ai didi

matlab - 是否可以检查重载 eq 的类的句柄相等性?

转载 作者:行者123 更新时间:2023-12-02 06:46:49 26 4
gpt4 key购买 nike

我的代码有一些属于我无法修改的第三方类的对象的句柄。该类重载了 eq,因此它不会像 == 的内置版本那样比较句柄是否指向同一个对象,而是根据输入对象的值,无论是否为同一对象提供两个句柄。

我明确想检查两个句柄是否指向同一个对象。我想也许 builtin 会拯救我。但是 builtin('eq',A,B) 只会导致错误:

Error using builtin

Undefined operator '==' for input arguments of type 'ThirdPartyClass'.

看起来builtin只喜欢“纯”函数,而handle.eqhandle类的一个特殊方法,与此不同来自对纯函数进行操作的内置函数 eq

使用 handle.eq(A,B) 使用类名显式调用 eq 也不起作用 - 这会产生错误

No method 'eq' with matching signature found for class 'handle'.

奇怪的是,使用相同的语法 ThirdPartyClass.eq(A,B) 调用重载会产生不同的错误:

The class ThirdPartyClass has no Constant property or Static method named 'eq'.

因此,我不太清楚 handle.eq(A,B) 是否也必须解释为对静态方法的调用。但至少在这种确切的形式中,它似乎不是调用该(重载的)常规方法的可行途径。

那么我是不是被这门课的作者非常不考虑周到的设计选择搞砸了?或者是否有某种方法可以访问已如此鲁莽重载的父类(super class)的方法?或者确实是一种从头开始实现 handle.eq 功能的方法(尽管这是 MATLAB 的内置函数之一,其实现在 m 代码中不可见)?

最佳答案

回顾list of public methods for handle 导致了一种在这种情况下可行的解决方案。自 lege在此类中重载,表达式 A <= B & A >= BA == B 具有相同的结果对于 eq 上没有重载的句柄类执行此操作.

关于matlab - 是否可以检查重载 eq 的类的句柄相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com