我想测试某个类的对象的单元格数组。
我在包中组织我的文件并使用cellfun(@(o) isa(o,'MyClassName'),myCellArray)
语句来缩短我的代码。
问题:false
似乎忽略了导入声明,为调用isa(myCellArray{i}, 'MyClassName')
产生true
的单元数组元素返回cellfun
。
如何import
尊重我的cellfun
声明?
编辑:导入语句可能不会传播到myfun.m
+pkg/
+pkg/MyClass.m
内的匿名函数吗?如果是的话,我怎么能达到这个目的呢?
文件:
% cat <<"%EOF" > myfun.m # paste into shell if on UNIX
function myfun()
import pkg.MyClass;
o{1} = MyClass();
x = cellfun(@(d) isa(d,'MyClass'),o);
fprintf('cellfun: %d\n',x);
b = isa(o{1},'MyClass');
fprintf('direct: %d\n',b);
fprintf('classes of o: \n');
cellfun(@class, o,'UniformOutput',false)
end
%EOF
myfun.m:
% mkdir "+pkg"; cat <<"%EOF" >"+pkg/MyClass.m" # paste to shell if on UNIX
classdef MyClass
end
%EOF
+ pkg / MyClass.m:
>> myfun
cellfun: 0
direct: 1
classes of o:
ans =
'pkg.MyClass'
我的输出是:
MyClass.m
如果我将myfun.m
移至与import ...
相同的目录,并移除myfun.m
中的>> myfun
cellfun: 1
direct: 1
classes of o:
ans =
'MyClass'
>>
行:
{{1}}