为什么Matlab';s cellfun功能不支持导入?如何将导入语句传播到匿名函数?
我想测试某个类的对象的对象单元数组。 我将文件组织在包中,并使用为什么Matlab';s cellfun功能不支持导入?如何将导入语句传播到匿名函数?,matlab,oop,import,cell-array,Matlab,Oop,Import,Cell Array,我想测试某个类的对象的对象单元数组。 我将文件组织在包中,并使用import语句缩短代码 问题是:cellfun(@(o)isa(o,'MyClassName'),myCellArray)似乎忽略了导入声明,对调用isa(myCellArray{i},'MyClassName')将产生true的单元格数组元素返回false 我如何才能使cellfun尊重我的导入声明 EDIT:导入语句是否可能不会传播到cellfun中的匿名函数?如果是,我如何存档 最小(非)工作示例 档案: myfun.m +
import
语句缩短代码
问题是:cellfun(@(o)isa(o,'MyClassName'),myCellArray)
似乎忽略了导入声明,对调用isa(myCellArray{i},'MyClassName')
将产生true
的单元格数组元素返回false
我如何才能使cellfun尊重我的导入
声明
EDIT:导入语句是否可能不会传播到cellfun
中的匿名函数?如果是,我如何存档
最小(非)工作示例
档案:
myfun.m
+pkg/
+pkg/MyClass.m
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
如果我将MyClass.m
移动到与myfun.m
相同的目录,并删除myfun.m
中的import…
行:
>> myfun
cellfun: 1
direct: 1
classes of o:
ans =
'MyClass'
>>
>> myfun
cellfun: 0
direct: 1
classes of o:
ans =
'pkg.MyClass'
>> myfun
cellfun: 1
direct: 1
classes of o:
ans =
'MyClass'
>>