0

正如标题所说,我正在使用构造函数设置一个属性,并希望稍后以静态 get 函数的形式访问该属性。我将如何在 MATLAB 中执行此操作?

classdef Wrapper
    
    properties(Access=public)
        dataStruct
    end
    
    methods
    
        function data = Wrapper(filePath)
            if nargin == 1
                data.dataStruct=load(filePath)
            end
            
        end
    end
        
    methods(Static)
        function platPosition = getPlatPosition()
            platPosition = dataStruct.someField
        end
    end
end

--------------------------
import pkg.Wrapper.*
test = Wrapper('sim.mat')
pos = test.getPlatPosition
4

1 回答 1

0

据我所知,MATLAB 没有像其他 OOP 语言[ref]那样的静态属性。在静态方法中只能使用静态属性。在 MATLAB 类中最接近静态属性的是Constant属性。缺点是常量属性必须初始化并且是只读的。在静态方法中,您可以使用类名访问只读/常量属性。

classdef Wrapper
    
    properties(Constant=true)
        dataStruct=load('\path\to\sim.mat');
    end
    
    methods
        function data = Wrapper()   
            %do something with object
        end
    end
        
    methods(Static=true)
        function platPosition = getPlatPosition()
            platPosition = Wrapper.dataStruct.Fieldname;
        end
    end
end

在您的情况下,您可以接受 object 作为静态方法的输入参数。

classdef Wrapper
    
    properties(Access=public)
        dataStruct
    end
    
    methods
    
        function data = Wrapper(filePath)
            if nargin == 1
                data.dataStruct=load(filePath)
            end
            
        end
    end
        
    methods(Static)
        function platPosition = getPlatPosition(obj)
            platPosition = obj.dataStruct.someField
        end
    end
end
--------------------------
import pkg.Wrapper.*
test = Wrapper('sim.mat')
pos = test.getPlatPosition(test);
于 2021-04-07T12:07:50.297 回答