Clo*_*son 5 null matlab reference
我有一个类Foo和一个函数Foo作为输入参数.在这个函数中我也使用isa以下方法进行错误检查:
function (x)
if ~isa(x,'Foo')
error('Wrong!');
end
Run Code Online (Sandbox Code Playgroud)
我想在Java中传递类似null的东西.但是当我通过它时,[]我收到一个错误.你能告诉我我能做些什么吗?我虽然总是传递一个单元格数组或empty每次使用时检查isa.
首先,您可以查看我们的情况
validParam = isa(x,'Foo') || isempty(x);
Run Code Online (Sandbox Code Playgroud)
但是,最好的方法是使用静态方法创建一个空类empty:
e = Foo.empty(0);
isa(x,'Foo')
Run Code Online (Sandbox Code Playgroud)
结果是:
ISA(Foo.empty(0), '富')
ans =
Run Code Online (Sandbox Code Playgroud)1
顺便说一句,这对另一种情况也很有用 - 假设您想要动态增长和Foo对象数组.您可以使用单元格数组,但之后会丢失类型安全性.相反,创造Foo.empty().
尽管如此,使用这种方法仍然存在一些问题.处理继承是不够智能的 -
让我们Bar成为一个继承自的阶级Foo.
classdef Bar < Foo
end
Run Code Online (Sandbox Code Playgroud)
然后你分配一个新的Foo对象数组:
x = Foo.empty(0)
Run Code Online (Sandbox Code Playgroud)
x =
0x0空Foo没有属性.
方法
然后尝试添加Bar:
x(end+1) = Bar()
Run Code Online (Sandbox Code Playgroud)
??? 从Bar转换为Foo时发生以下错误:使用==> Foo时出错使输入参数太多.
因此,这种情况的唯一解决方法是使用单元阵列.
编辑(1): 似乎Matlab添加了一个特殊的类来处理继承:
描述
matlab.mixin.Heterogeneous是一个抽象类,为异构数组的形成提供支持.异构数组是在特定类中不同的对象数组,但它们都是从根类派生的或是根类的实例.根类直接从matlab.mixin.Heterogeneous派生.