我想创建一个结构然后使用函数来分配各种属性。例如,我有以下代码:
global car
function f1(x)
car.color = x;
end
function f2(x)
car.make = x;
end
为什么这不起作用?我不需要函数来返回任何东西,我只需要它们来分配属性。
编辑:
有人建议如下,但是当我输入最后一个“car”命令时,我仍然得到所有空属性:
car = struct('make',[],'model',[],'color',[],'year',[]);
%
function y = test1(x)
car(1).color = x;
y = car;
end
%
function y = test2(x)
car(1).make = x;
y = car;
end
%
y = test1('red');
y = test2('Mazda');
%
car
EDIT2: 尝试失败:
答案 0 :(得分:2)
它对我有用。但是,您需要确保上述语句进入函数脚本,并确保在运行此函数之前在工作区中创建car
global
,并且还要执行此操作内部功能也是如此。在工作空间中执行global car
可确保变量为global
,然后您必须在函数脚本中再次执行此操作,以便我们保持相同的范围。
例如,这就是我设置的内容,我将其放在名为test_func.m
的文件中:
function test_func
global car;
function f1(x)
car.color = x;
end
function f2(x)
car.make = x;
end
f1('blue');
f2('audi');
end
完成此设置后,我只需在命令提示符下执行此操作:
>> global car;
>> test_func;
>> disp(car);
我明白了:
color: 'blue'
make: 'audi'
在工作空间中执行global car
允许变量在每个范围内都可见,然后当我调用该函数时,执行global car
允许我们修改car
变量及其范围来自工作区并动态添加字段,使其成为一个结构,如上所示。