adrien.pain
adrien.pain

Reputation: 453

How to define a constant using another one in a Matlab class

I can't figure out how to do such a simple thing like defining constants using other ones.

For instance, a dummy example :

classdef DummyClass < handle
    properties (Constant)
        NB_SECONDS_IN_MINUTE = 60;
        NB_MINUTES_IN_HOUR   = 60;

        NB_SECONDS_IN_HOUR   = NB_SECONDS_IN_MINUTE * NB_MINUTES_IN_HOUR;
    end
end

This does not work :(

I then tried with this line :

NB_SECONDS_IN_HOUR   = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR;

but that doesn't work either...

Someone got a clue here ? :/

(I'm using MATLAB R2009a btw)

Upvotes: 5

Views: 1161

Answers (1)

Edric
Edric

Reputation: 25160

You definitely need to refer to the constants with the full class name, as in your second case. Is DummyClass within a package (+packagename) directory? If so, you need to use the fully qualified name, i.e.

NB_SECONDS_IN_HOUR = packagename.DummyClass.NB_SECONDS_IN_MINUTE * packagename.DummyClass.NB_SECONDS_IN_HOUR;

EDIT: just tested this in R2009a:

>> ver matlab
-------------------------------------------------------------------------------------
[...]
-------------------------------------------------------------------------------------
MATLAB                                                Version 7.8        (R2009a)
>> type DummyClass

classdef DummyClass < handle
    properties (Constant)
        NB_SECONDS_IN_MINUTE = 60;
        NB_MINUTES_IN_HOUR   = 60;

        NB_SECONDS_IN_HOUR   = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR;
    end
end

>> DummyClass.NB_SECONDS_IN_HOUR
ans =
        3600

Upvotes: 7

Related Questions