Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Matlab';s cellfun功能不支持导入?如何将导入语句传播到匿名函数?_Matlab_Oop_Import_Cell Array - Fatal编程技术网

为什么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'
>>