How to make function assign variables that will stick around after the function is done running?

For example:
function test(x)
car.color = x;
end
if i first input
global car
I want car.color to exist after i input test('red')

 Accepted Answer

Have it return the structure ‘car’ as an output:
function car = test(x)
car.color = x;
end
%
car = test('red')
produces:
car =
color: 'red'

8 Comments

but "car" doesn't exist anymore after the function has ran :( i want it to still be stored somewhere in the memory
i guess car = test('red') works ... i think <.<
edit: nope, running another function like
function car = test(x)
car.make = x;
end
%
car = test('mazda')
removed color and just leaves "make"
I need to be able to apply functions to the same structure to pile on attributes
Try this:
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
produces:
car =
make: 'Mazda'
model: []
color: 'red'
year: []
errrr, no, still doesn't assign anything for some reason :<
make: []
model: []
color: []
year: []
It did for me. Did you copy-paste-run the code I posted? (I’m running R2015a, but it should run on all recent releases.)
Post the code you’re running if it’s different from what I posted.
Run my code in a single script file. You may be inadvertently clearing the structure by running it in the Command Window.

Sign in to comment.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!