C#(或C+;+;)关键字';使用';对于Matlab?

C#(或C+;+;)关键字';使用';对于Matlab?,c#,c++,matlab,keyword,using,C#,C++,Matlab,Keyword,Using,标题里说的都是 我修改了一个函数,它使用了很多参数,以便只给它一个包含所有这些参数的结构。现在,我不想重写函数中的所有内容(param1到struct.param1),所以我想添加类似“using struct”的内容,这将允许整个函数从“struct.param1”中获取“param1” 这是否清楚?英语不是我的母语。这样做的一种恶劣方式是 function my_using( params ) % % params should be a struct (NOT an array of st

标题里说的都是

我修改了一个函数,它使用了很多参数,以便只给它一个包含所有这些参数的结构。现在,我不想重写函数中的所有内容(param1到struct.param1),所以我想添加类似“using struct”的内容,这将允许整个函数从“struct.param1”中获取“param1”


这是否清楚?英语不是我的母语。

这样做的一种恶劣方式是

function my_using( params )
%
% params should be a struct (NOT an array of struct!)
%
fn = fieldnames( params );
for ii = 1:numel( fn )
    assignin('caller', fn{ii}, params.(fn) );
end

现在,您可以在函数中使用调用
my\u,结构中的所有参数都将作为函数中的变量创建

另一种方法是

tn = tempname();
save( tn , '-struct', 'params' ); % note the -struct option!
load( tn );

如果函数在类中,则可以使用
this.param1
并简单地说
param1
。据我所知,C#中没有别名(仅用于名称空间/类型),也许某种预处理器可以做到这一点。但一般来说,当你想在不改变某些东西的情况下进行更改时,你仍然可以创建一个新东西,并以可比较的方式调用旧东西:
void newfunc(mystruct struct){oldfunction(struct.param1,struct.param2,…;}
assignin('caller',fn{ii},params.(fn{ii}))