在其他方法中访问从 class 的方法返回的数据
access data returned from a method of a class in other methods
我有以下class
classdef setting
properties(Constant)
n = setting.get_n;
q = setting.get_q;
end
methods(Static)
function data = load_setting
File = 'Configuration.ini';
I = INI('File',File);
I.read();
data = I.get('UserData'); % struct
end
function n = get_n
data = setting.load_setting;
n = data.m + 2;
end
function q = get_q
data = setting.load_setting;
temp = data.q;
q = fieldnames(temp);
end
end
end
我想知道是否可以在 class 中定义的其余方法中自动访问 load_setting
返回的 data
而不是调用它 data = load_setting
在每个方法中。建议将非常有帮助。
常量通常由 MATLAB 中的函数提供。例如,pi
是一个函数。提供从文件读取的常量数据的函数可以这样写,使用关键字 persistent
(代码未测试):
function data = config_data
persistent data;
if isempty(data)
File = 'Configuration.ini';
I = INI('File',File);
I.read();
data = I.get('UserData');
end
end
现在第一次使用 config_data
时,它会加载数据。随后它将立即 return 数据结构。在最新版本的 MATLAB 中,您可以对函数的 return 值使用点索引,因此您可以执行 config_data().m
或 config_data().q
并从数据中获取相关字段。上面的函数可以进一步处理数据以获得在静态 class 方法中计算的 q
和 n
值,因此您不需要 setting
中的任何内容class,只要所有数据都是静态的。
如果你需要你的常量数据是一个 class 而不是一个函数(动态计算值的静态方法,或使用输入值),我会把上面的插入你的 class作为静态函数 load_setting
,因为这会导致最少的工作量。
有一种方法可以创建常量 属性,您可以更改它!它通过class组成。
首先你应该定义一个引用(句柄)类型的数据class:
classdef dataclass<handle
properties
m=3;
n=4;
end
end
然后在您的设置中创建常量数据 属性 class :
classdef setting
properties (Constant)
data=dataclass()
end
methods (Static)
function somefunc()
a=setting();
a.data.n=1;
a.data.m=2;
end
function out=showdata()
out=setting.data;
end
end
end
这样你就有了对数据的常量引用,当你调用 A.somefunc() 时你可以在所有 class 和 class 的所有对象中更改它。
我有以下class
classdef setting
properties(Constant)
n = setting.get_n;
q = setting.get_q;
end
methods(Static)
function data = load_setting
File = 'Configuration.ini';
I = INI('File',File);
I.read();
data = I.get('UserData'); % struct
end
function n = get_n
data = setting.load_setting;
n = data.m + 2;
end
function q = get_q
data = setting.load_setting;
temp = data.q;
q = fieldnames(temp);
end
end
end
我想知道是否可以在 class 中定义的其余方法中自动访问 load_setting
返回的 data
而不是调用它 data = load_setting
在每个方法中。建议将非常有帮助。
常量通常由 MATLAB 中的函数提供。例如,pi
是一个函数。提供从文件读取的常量数据的函数可以这样写,使用关键字 persistent
(代码未测试):
function data = config_data
persistent data;
if isempty(data)
File = 'Configuration.ini';
I = INI('File',File);
I.read();
data = I.get('UserData');
end
end
现在第一次使用 config_data
时,它会加载数据。随后它将立即 return 数据结构。在最新版本的 MATLAB 中,您可以对函数的 return 值使用点索引,因此您可以执行 config_data().m
或 config_data().q
并从数据中获取相关字段。上面的函数可以进一步处理数据以获得在静态 class 方法中计算的 q
和 n
值,因此您不需要 setting
中的任何内容class,只要所有数据都是静态的。
如果你需要你的常量数据是一个 class 而不是一个函数(动态计算值的静态方法,或使用输入值),我会把上面的插入你的 class作为静态函数 load_setting
,因为这会导致最少的工作量。
有一种方法可以创建常量 属性,您可以更改它!它通过class组成。 首先你应该定义一个引用(句柄)类型的数据class:
classdef dataclass<handle
properties
m=3;
n=4;
end
end
然后在您的设置中创建常量数据 属性 class :
classdef setting
properties (Constant)
data=dataclass()
end
methods (Static)
function somefunc()
a=setting();
a.data.n=1;
a.data.m=2;
end
function out=showdata()
out=setting.data;
end
end
end
这样你就有了对数据的常量引用,当你调用 A.somefunc() 时你可以在所有 class 和 class 的所有对象中更改它。