Matlab-访问后将属性设置为[]

时间:2018-10-09 13:43:29

标签: matlab octave

我有一个简单的数据加载类:

Message

加载数据后,我可以看到该对象报告数据在以下位置:

classdef DataLoader
    properties
        data;
    end

    methods
        function obj = loadData(obj, file)
            obj.data = csvread(file);
        end
    end
end

但是,当我访问数据时:

s = DataLoader();
s.loadData('data.csv')
ans = 

  DataLoader with properties:

    data: [8738102×8 double]

此外,在此访问权限之后:

s.data

ans =

     []

编辑:所以我已经解决了我的问题:

s = 

  DataLoader with properties:

    data: []

但是有一种方法可以做到:

s = s.loadData('data.csv');

1 个答案:

答案 0 :(得分:2)

您已经发现,由于类是value class,因此必须用loadData返回的新对象覆盖旧对象。如果您希望对象具有类似引用的行为,则需要从handle class继承。这是新班级代码的样子:

classdef DataLoader < handle  % Inherit from handle class
    properties
        data;
    end

    methods
        function loadData(obj, file)  % No need to return output now
            obj.data = csvread(file);
        end
    end
end

现在您可以使用以下语法:

s.loadData('data.csv');