Matlab中简单的面向对象编程:“输出参数太多”

时间:2013-12-07 13:41:26

标签: matlab oop

我是Matlab编程的新手,我只是想尝试一个小的OOP场景,但它并没有像预期的那样工作。这是我的代码:

classdef testOOP 

    properties
        age = 0;
        subject = '';
    end

    methods
        function ret = getSubject(this)
            ret = this.subject;
        end

        function ret = getAge(this)
            ret = this.age;
        end
    end 
end

当我运行m文件并在命令提示符中试用这些函数时,我得到异常“输出参数太多”:

ans =

    testOOP

>> x = testOOP

x =

    testOOP

>> x.age = 4

x =

    testOOP

>> x.age

ans =

     4

>> x.getAge

ans =

     4

>> x.getAge()

ans =

     4

>> y = x.getAge()
??? Error using ==> getAge
Too many output arguments.

我想知道为什么会失败,即使它在我使用时有用

y = ans

2 个答案:

答案 0 :(得分:3)

我刚刚找到了这个很好的教程:http://www.cs.ubc.ca/~murphyk/Software/matlabTutorial/html/objectOriented.html#2

它表示Matlab的OOP从版本2008b开始发生了变化。

我正在使用Matlab 2007b(应该提到它,抱歉......),语法是这样的:

>> a = testOOP 
a =
    testOOP
>> getAge(a)
ans =
     0
>> y = getAge(a)

这终于有效了。

答案 1 :(得分:2)

我尝试了你的代码(现在包括最后一行),我没有收到任何错误。我脑海中只有一种解释:

  • 您创建了一个破碎的课程
  • 创建了一个实例
  • 您修复了类,但只要旧版本实例化,Matlab就不会更新类定义。

尝试clear all,删除所有实例,然后重试。