这是一些数据。
A = {'asdf' 'qwer'};
当我使用==
时,我得到了
>> A == 'asdf'
Undefined operator '==' for input arguments of type 'cell'.
这是预料之中的。解决方法是
>> ismember(A, 'asdf')
ans =
1 0
如何为单元格类添加方法,以便==
默认以上述方式调用ismember
?
答案 0 :(得分:2)
您可以按照in this answer。
的说明为单元格数组重载@eq
为什么这是一个坏主意? ismember
仅在单元格数组中有字符串时才有效,但不适用于其他数据类型。此外,它将使您的代码不可移植,例如,我不想使用为内置数据类型重载运算符的代码。
如果您真的想拥有类似于单元格数据的数据类型,可以将@eq
用作ismember
,则可以创建子类{{1}的自定义类myCellArray
并保证每个元素都包含一个字符串。然后,您可以根据需要重载运算符。
答案 1 :(得分:1)
如果要测试字符串'asdf'
是否在单元格数组{'asdf','qwer'}
中,则应该使用ismember
函数:
my_set = {'asdf','qwer'};
logical_result = ismember('asdf',my_set);
执行您的建议时,存在主要的风格问题:
==
(即A==A
返回false)且不对称(A==B
与{{B==A
不同1}})奇怪。