当前位置:  开发笔记 > 编程语言 > 正文

如何在Matlab中创建一个多态数组

如何解决《如何在Matlab中创建一个多态数组》经验,为你挑选了1个好方法。

我想创建一个抽象类的数组,并在每个数组的元素上调用一些run()方法,这些元素引用该类的实现.

在Java之类的东西(请原谅语法,这只是为了说明一点),代码将是这样的:

abstract class Base{
    public void run();
}

class Derived0 extends Base{
    public void run(){...};//overrides Base's run() method
}

class Derived1 extends Base{
    public void run(){...};//overrides Base's run() method
}

class Derived2 extends Base{
    public void run(){...};//overrides Base's run() method
}

主要:

Base baseArray[3];
baseArray[0] = new Derived0();
baseArray[1] = new Derived1();
baseArray[2] = new Derived2();

//runs each possible run() method, without main knowing any of them.
for(int i=0;i<3;++i){
    baseArray.run();
}

我想在matlab中实现这种行为

到目前为止,我所接受的是这个问题的接受答案:

Matlab中的遗传多态性

我缺少的是如何制作数组baseArray?

之类的baseArray = []原因baseArray(1) = Derived0;,以期待双,因而失败.

在matlab中实例化Base数组是不可能的,因为类是抽象的,并且不能用matlab创建对象数组的方式创建实例(我知道).

所以,请帮我在Matlab中实现一个多态数组.

我也很欣赏python解决方案,尽管Matlab解决方案是最好的.

谢谢!



1> Suever..:

在MATLAB中,如果使用实例化数组baseArray = [],那么您已经声明该数组将是类型,double因此它将无法工作.相反,您可以使用类的empty方法来创建该类的空数组.

baseArray = Derived0.empty();
baseArray(1) = Derived0();

或者,您可以立即创建阵列

baseArray = [Derived0(), Derived0(), Derived0()];

此外,如果你想拥有一个异构的对象数组,你需要确保你的基类也继承matlab.mixin.Heterogeneous,然后你可以做

baseArray = [Derived0(), Derived1(), Derived2()];

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有