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 Graphics Performance 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!