Octave句柄类方法返回对象而不是数字

时间:2018-03-26 19:46:22

标签: oop octave

我有一个班级TestClass

classdef TestClass < handle
  methods
    function o = doNothing(vec)
      o = vec;
    end
  end
end

我像这样运行doNothing方法:

test = TestClass;
x = test.doNothing([1, 0, 1]);

我希望x在执行此代码后包含[1, 0, 1]但由于某种原因doNothing会返回TestClass个对象。

我对Octave / Matlab很新,所以我的问题可能是基本误解的结果,但是我无法找到答案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

对象方法的第一个输入是其自身的实例,因此在您的示例代码中vec是您的TestClass对象。由于Octave没有太多输入参数的错误(至少对于类而言),因此您不会收到错误。

要解决此问题,请将自输入添加到方法声明中:

classdef TestClass < handle
  methods
    function o = doNothing(self, vec)
      o = vec;
    end
  end
end

哪些功能如预期:

>> A = TestClass;
>> A.doNothing(12)

ans =  12