The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Value classes - do you use them? also syntax questions
Replies: 4   Last Post: May 22, 2013 4:32 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]

Posts: 95
Registered: 2/11/09
Re: Value classes - do you use them? also syntax questions
Posted: May 22, 2013 11:42 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Steven_Lord" <> wrote in message <kngq7u$2to$>...
> "Eric Sampson" <> wrote in message
> news:kngl1l$gd1$

> > I posted the below on Answers but got no responses, perhaps the newsgroup
> > is a better forum to discuss this :)
> > ---------
> >
> > 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 a bit ungainly, because
> > you always have to do two steps like this:
> >
> > foo = MyValueClass(5); % sets a property 'val'
> > foo = foo.double();
> > plot(foo.val);

> Why does the DOUBLE method of the MyValueClass return an object instead of a
> double array?

Sorry Steve, my example was quickly made and obviously confusing; I was intending the DOUBLE method to just take the current value of the VAL property and multiply it by two, not do a conversion. I didn't even realize that DOUBLE/CHAR/etc methods had special meanings, I should have called my method TIMESTWO to prevent confusion :)

classdef myValueClass

val = [];

function obj = timestwo(obj, in)
obj.val = 2 * in;

Perhaps the above might explain my original question better now? I can't return the result of TIMESTWO directly instead of the object, because if I did that then the modified object (containing the updated VAL) would not overwrite the original object in the base workspace. I could change the timestwo method to look like this, function [obj, out] = timestwo(in), but then I couldn't call it in a chained function call situation like plot(sin(obj.timestwo(5))) ...

> > 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?

> That's what matlab.mixin.Copyable is for.

Thanks Steve, I'll confess that I hadn't figured out the purpose of that abstract class yet! I think the fact that it was in the 'mixin' package threw me off, compared to the other abstract handle classes like hgsetget/dynamicprops which are not - I guess I figured from that fact & the package name that it had to do with defining a mixin class.

Speaking of that, how do you do mixins in MATLAB OOP? Also, how/can you add methods dynamically to a class and/or instance?


Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.