Info

This question is closed. Reopen it to edit or answer.

value classes - do you use them? I must be doing something wrong...

1 view (last 30 days)
So I can't really recall ever creating a value class, all mine seem to be handle classes. Is that the same as your experience? Unless I'm completely missing something, using value classes seems to be painful, because you always have to do two steps like this:
foo = MyValueClass(5); % sets a property 'val'
foo = foo.double();
plot(foo.val);
With a handle class, I'd just do this:
foo = MyHandleClass(5);
plot(foo.double()); % double returns the new obj.val directly.
Am I completely out to lunch with this understanding of value classes?
As an aside, sometimes it seems like it would be nice to have the above syntax of a handle class, but be able to make independent copies of a given object like a value class... Anyone else think so?
Thanks for your thoughts, Eric

Answers (1)

Andrew Newell
Andrew Newell on 6 Jun 2013
I have no idea what your method double does or what your class constructor does with the input, so I'll create a trivial example where you could do your plot in two commands:
classdef MyValueClass
properties
val
end
methods
function obj = MyValueClass(val)
obj.val = val;
end
end
end
Now for an example of its use:
foo = MyValueClass(0:1);
plot(foo.val)
See Comparing Handle and Value Classes. For much of the work I do, value classes are preferable.

Community Treasure Hunt

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

Start Hunting!