Как определить константу, используя другую в классе Matlab - PullRequest
5 голосов
/ 26 января 2012

Я не могу понять, как сделать такую ​​простую вещь, как определение констант с использованием других.

Например, фиктивный пример:

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

Это не работает:(

Затем я попытался с этой строкой:

NB_SECONDS_IN_HOUR   = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR;

, но это тоже не работает ...

Кто-то получил здесь подсказку?: /

(я использую MATLAB R2009a, кстати)

1 Ответ

6 голосов
/ 26 января 2012

Вам обязательно нужно обратиться к константам с полным именем класса, как во втором случае. Находится ли DummyClass в каталоге пакета (+packagename)? Если это так, вам нужно использовать полное имя, т.е.

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

РЕДАКТИРОВАТЬ: только что проверил это в 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
...