代码之家  ›  专栏  ›  技术社区  ›  sajran

Octave handle类方法返回object而不是number

  •  1
  • sajran  · 技术社区  · 7 年前

    我有课 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公司 退货 测试类 对象

    我对倍频程/Matlab非常陌生,所以我的问题可能是根本性误解的结果,但我无法找到答案。任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  2
  •   sco1    7 年前

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

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

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

    功能如预期:

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